- IOC(DI) 和 AOP 是Spring中最核心的两个功能
但现在已衍生出spring boot 、spring cloud、springdata...等等
- IOC:控制反转(DI:依赖注入) IOC与DI是一回事
控制反转:反转的是:获取对象的方式 从new(创建) → get(拿)。
控制的是:由Spring帮我们负责创建销毁对象,掌控对象的生命周期等。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">
//通过name来利用容器获取对象
//class:被管理对象的全包名
<bean name="stu" class="cn.lk.bean.Student"></bean>
</beans>
@Test
public void Test1() {
//获取容器对象
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//通过getBean方法获取配置好的bean对象
Student stu = (Student)ac.getBean("stu");
System.out.println(stu);
}
- 由于控制反转概念难理解
在一次大会上,IOC被更名为DI(依赖注入)
依赖注入:将值通过配置的方式为变量赋值(注入)
注入方式:set方式注入 、构造注入 、 属性注入
- IOC是一种编程思想,也是一种设计模式 。可看成是个超级工厂(简单工厂设计模式(涉及多态)的升级版)
无论要什么对象,都可以直接去springioc容器中获取
因此ioc操作分为2步:①先往ioc中存放对象并赋值 ②需要时从ioc中拿
- xml配置——bean标签——scope属性
scope= singleton:单例(默认值) 一般项目中只使用此默认属性值
prototype:多例
request: 对象的生命周期与request请求一致
session: 对象的生命周期与session一致(一次会话后被释放掉)
- 注入方式:1.set注入 关键字是 property
通过setXxx()方法赋值 , 底层通过反射实现。
反射机制:Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。对于任何一个对象,我们都能够对它的方法和属性进行调用。我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制。
id:唯一标识符 class:指定类型
property:该类所代表的类属性 name: 属性名 value:属性值
复杂类型注入:
注解配置:将对象注册到容器