DI是从Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者注入了依赖的实例,这就是Spring的依赖注入。
接下来一个实践演练下:
在com.iteima.ioc包下创建接口UserDao
package com.itheima.ioc;
public interface UserDao {
public void say();
}
在包下创建UserDao接口的实现类UserDaoImpl
package com.itheima.ioc;
public class UserDaoImpl implements UserDao {
@Override
public void say() {
System.out.println("UserDao say Hello World!");
}
}
在包下创建UserService接口:
package com.itheima.ioc;
public interface UserService {
public void say();
}
在包下创建UserService的实现类UserServiceImpl类:
package com.itheima.ioc;
public class UserServiceImpl implements UserService{
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void say() {
userDao.say();
System.out.println("UserService say Hello World");
}
}
创建配置文件,取名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-4.3.xsd">
<bean id="userDao" class="com.itheima.ioc.UserDaoImpl">
</bean>
<bean id="userService" class="com.itheima.ioc.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>
</beans>
创建测试类TestDI
package com.itheima.ioc;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestDI {
public static void main(String[] args) {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = (UserService) applicationContext.getBean("userService");
userService.say();
}
}
运行测试类后的效果如图:
欢迎有疑问的朋友提问和大佬评论