Bean的依赖注入
编写Dao接口和Dao实现类
public interface UserDao {
public void save();
}
public class UserDaoImpl implements UserDao {
public void save() {
System.out.println("UserDaoImpl中的save方法执行了...");
}
}
编写UserService接口和UserServiceImpl实现类.
public interface UserService {
public void save();
}
public class UserServiceImpl implements UserService {
private UserDao userDao;
public UserServiceImpl() {
}
public UserServiceImpl(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void save() {
userDao.save();
}
}
创建spring的核心配置文件
<?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">
</beans>
第一种:有参构造方法注入
在spring的核心配置文件中进行配置
<!--构造方法注入-->
<bean id="userService" class="com.zr.service.impl.UserServiceImpl">
<constructor-arg name="userDao" ref="userDao"></constructor-arg>
</bean>
写个Demo测试一下
public class Demo {
public static void main(String[] args) {
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = (UserService) app.getBean("userService");
userService.save();
}
}
打印结果:
第二种:set方法注入
在UserServiceImpl中添加setUserDao方法
public class UserServiceImpl implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void save() {
userDao.save();
}
}
在spring的核心配置文件中进行配置
<bean id="userService" class="com.zr.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>
同样可以写一个Demo去测试一下,这里就不演示了.
第三种:P命名空间注入
P命名空间注入本质也是set方法注入,但比起上述的set方法注入更加方便,主要体现在配置文件中
<!--P命名空间注入-->
<bean id="userService" class="com.zr.service.impl.UserServiceImpl" p:userDao-ref="userDao"/>
同样这里也可以写一个Demo去测试一下,这里就不演示了.