一、set方法的注入
1.介绍
- a. 在需要注入的类中,定义:个私有的成员变量,并且生成set利get方法
- b. 在配置文件中,定义该类的bean对象,并且在bean标签中,编写property标签, 给其中name和ref属性进行赋值,该属性具体含义参看课堂代码注释
- c. 测试
2.代码展示
先写一个UserDao接口:
package com.hnpi.dao;
public interface UserDao {
void test();
}
实现这个接口的方法:
package com.hnpi.dao.impl;
import com.hnpi.dao.UserDao;
public class UserDaoImpl implements UserDao {
@Override
public void test() {
System.out.println("Hello World!");
}
}
在写一个UserService接口:
package com.hnpi.service;
public interface UserService {
void test2();
}
实现这个接口的方法:
package com.hnpi.service.impl;
import com.hnpi.dao.UserDao;
import com.hnpi.service.UserService;
public class UserServiceImpl implements UserService {
//定义UserDao接口变量
private UserDao userDao;
/**
* UserService接口的方法
*/
@Override
public void test2(){
System.out.println("这是UserService层");
//调用UserDao接口中的方法
userDao.test();
}
//get和set方法
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
//无参构造
public UserServiceImpl() {
super();
}
//有参构造
public UserServiceImpl(UserDao userDao) {
this.userDao = userDao;
}
}
然后就是配置applicationContext.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userDao" class="com.hnpi.dao.impl.UserDaoImpl"></bean>
<bean id="userService" class="com.hnpi.service.impl.UserServiceImpl">
<!--
name:类中成员变量名;
ref:引用IOC容器托管的bean对象;
类中有多个成员变量名可以写多个<property></property>标签
-->
<property name="userDao" ref="userDao"/>
</bean>
</beans>
最后就是测试类:
package com.hnpi.test;
import com.hnpi.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
//加载applicationContext.xml配置文件
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//UserService接口的对象,被spring的IOC容器所实例化
UserService userService = (UserService) ac.getBean("userService");
userService.test2();
}
}
测试后,成功调用UserService实现接口中的 test2() 方法,并输出结果:
二、构造方法注入
只用在applicationContext.xml文件添加一个标签:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- -->
<bean id="userDao" class="com.hnpi.dao.impl.UserDaoImpl"></bean>
<bean id="userService" class="com.hnpi.service.impl.UserServiceImpl">
<!--
name:构造方法中成员变量名;
ref:引用IOC容器托管的bean对象;
构造方法中有多个成员变量名可以写多个<constructor-arg></constructor-arg>标签
-->
<constructor-arg name="userDao" ref="userDao"/>
</bean>
</beans>
然后也能正常输出结果。