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 配置

三种配置方式:

  1. XML 配置
  2. 注解配置
  3. 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

从 IoC 容器中获取 bean:

ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
User user = (User) context.getBean("user");
1
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
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

bean 生命周期

image

Last Updated: 2023/8/2 10:45:34
Contributors: licong96