IOC 控制反转
什么是IOC
把对象的创建权限转交给spring容器,让spring容器帮我们实例化对象,我们做的只是从spring容器中获取实例
package com.service;
import com.dao.impl.UserDaoImpl;
import com.factory.BeansFactory;
import com.service.impl.UserService;
import org.junit.Test;
public class UserServiceTest {
/**
*
* JavaBean :实体类、所有的java类
* 之前的方式调用Service
*/
@Test
public void testAddUser(){
//1.实例化对象
UserService userService =new UserService();//是我们自己创建的
UserDaoImpl userDao = new UserDaoImpl();
//2.调用方法
userService.addUser();
userDao.addUser();
}
/**
* 通过工厂实例化UserService
*/
public void testAddUser2(){
//1.实例化工厂
BeansFactory beansFactory = new BeansFactory("beans.properties");
//2.通过工厂获取UserService的实例
UserService userService =(UserService) beansFactory.getBean("userService");
UserDaoImpl userDao =(UserDaoImpl) beansFactory.getBean("userDao");
//3.调用对象的中的方法
userService.addUser();
userDao.addUser();
}
}
DI 依赖注入
什么是依赖注入
依赖了一个spring容器注入的那个对象,在使用时需要使用set和get方法进行复制,以后还会用到其他方法
package com.dao.impl;
public class UserDaoImpl {
public void addUser(){
}
}
package com.service.impl;
import com.dao.impl.UserDaoImpl;
public class UserService {
public UserDaoImpl getUserDao() {
return userDao;
}
public void setUserDao(UserDaoImpl userDao) {
this.userDao = userDao;
}
private UserDaoImpl userDao;//这里只负责声明,spring会自动注入进来
public void addUser(){
System.out.println("UserServic.addUser");
userDao.addUser();
}
}
<?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>标签,指的就是javabean
id:bean的唯一标识
class:bean的全类名
-->
<bean id="userService" class="com.service.impl.UserService">
<!--
给userService里的userDao属性赋值
把userDao实例注入给userService中的属性,注入的时候会调用set,get方法
-->
<property name="userDao" ref="userDao"/>
</bean>
<bean id="userDao" class="com.dao.impl.UserDaoImpl"/>
</beans>
本文深入解析了Spring框架中的两个核心概念:IOC(控制反转)和DI(依赖注入)。介绍了如何通过Spring容器管理对象的创建和依赖关系,展示了通过配置文件实现对象实例化和依赖注入的过程。
2538





