Spring
- Spring IoC
Spring IoC
- Spring 快速入门
- Spring XML 配置
- 对象实例化配置
- 依赖注入配置
- 注解与 Java Config
- Spring 单元测试
IoC 控制反转
IoC 是一种设计理念,程序设计遵循的标准,是宏观目标。DI 依赖注入,是 Java 中具体技术实现,原理使用了反射技术实现对象注入,是微观实现。
由代理人来创建与管理对象,消费者通过代理人来获取对象。
IoC 的目的是降低对象与消费者之间直接的耦合关系。
IoC 容器就是代理人。
Spring IoC 容器
Spring IoC 容器是 Spring 框架的核心,负责创建对象、管理对象、注入对象。
AOP 切面编程是 Spring 框架的核心,负责管理事务、日志、权限等。
- 对象的控制权交由 Spring IoC 容器来管理
- 利用反射机制,通过依赖注入来解决对象之间的依赖关系
- 通过配置文件或注解来描述对象的创建、注入、销毁,无需修改源代码,只需修改配置文件
- 对象与对象之间有效的解耦,不再通过 New 关键字绑定
Spring XML 配置
三种配置方式:
- XML 配置
- 注解配置
- Java Config 配置
1. XML 配置文件
- 创建实例对象
- 利用 ref 属性注入依赖对象
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 https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="car" class="com.example.demo.Car">
<property name="name" value="特斯拉"/>
</bean>
<!-- ref -->
<bean id="user" class="com.example.demo.User">
<property name="name" value="张三"/>
<property name="age" value="18"/>
<property name="car" ref="car"/>
</bean>
</beans>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
从 IoC 容器中获取 bean:
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
User user = (User) context.getBean("user");
1
2
2
通过带参构造方法创建对象使用 constructor-arg
标签:
<bean id="user" class="com.example.demo.User">
<constructor-arg name="name" value="张三"/>
<constructor-arg name="age" value="18"/>
<constructor-arg name="car" ref="car"/>
</bean>
1
2
3
4
5
2
3
4
5
public class User {
private String name;
private Integer age;
private Car car;
public User(String name, Integer age, Car car) {
this.name = name;
this.age = age;
this.car = car;
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11