2.IOC和DI
**IOC和DI的概念和区别(面试题)** 1. IOC和DI的概念 * IOC -- Inverse of Control,控制反转,将对象的创建权反转给Spring!! * DI -- Dependency Injection,依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件中!! 2. DI(依赖注入) * 例如:如果UserServiceImpl的实现类中有一个属性,那么使用Spring框架的IOC功能时,可以通过依赖注入把该属性的值传入进来!! * 具体的配置如下 <bean id="us" class="com.itheima.demo1.UserServiceImpl"> <property name="uname" value="小风"/> </bean>
applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入schema的约束 -->
<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">
<!-- 先配置dao -->
<bean id="ud" class="demo1.UserDaoImpl"></bean>
<!-- 需要配置具体的Bean -->
<bean id="userService" class="demo1.UserServiceImpl">
<!-- 依赖注入:给uname的属性传入值 -->
<property name="uname" value="张三"></property>
<!-- ref值指的是bean中的id,name指的是bean中的属性 -->
<property name="userDao" ref="ud"></property>
</bean>
</beans>
UserDaoImpl:
package demo1;
public class UserDaoImpl {
public void save(){
System.out.println("向数据库中添加用户的数据");
}
}
UserServiceImpl:
package demo1;
public class UserServiceImpl implements UserService{
//UserServiceImpl中包含属性
private String uname;
public void setUname(String uname) {
this.uname = uname;
}
//定义一个成员变量
private UserDaoImpl userDao;
public void setUserDao(UserDaoImpl userDao) {
this.userDao = userDao;
}
public void save() {
System.out.println("UserServiceImpl执行了"+uname);
//传统方式
/*UserDaoImpl dao=new UserDaoImpl();
dao.save();*/
//调用保存的方法
userDao.save();
}
}
SpringDemo1:
package demo1;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringDemo1 {
/**
* 传统的方式
*/
@Test
public void run1(){
//传统方式
UserService us=new UserServiceImpl();
us.save();
}
/**
* 使用spring的IOC的方式
*/
@Test
public void run2(){
//获取spring的工厂对象
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
//从工厂中获取具体的Bean实例对象,参数为配置文件中的id值
UserService us = (UserService) ac.getBean("userService");
us.save();
}
}

浙公网安备 33010602011771号