Spring的两大核心机制
控制反转(IOC)/依赖注入(DI)
面向切面编程(AOP)
如何使用IOC
- 创建maven工程,pom.xml加入依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
</dependencies> - 创建实体类User
import lombok.Data;
@Data
public class User {
private String name;
private int id;
private int age;
} - 传统的开发模式,手动new一个user对象
User user =new User();
user.setAge(18);
user.setId(9);
user.setName("黄波");
System.out.println(user); 利用IOC,在配置文件中添加需要管理的对象,格式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/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="user" class="org.csu.entity.User">
<property name="age" value="19"></property>
<property name="id" value="8"></property>
<property name="name" value="黄波"></property>
</bean> ``` 从IOC中获取对象
//加载配置文件 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml"); User user = (User)applicationContext.getBean("user"); System.out.println(user);
配置文件
通过配置bean标签来完成对象的管理
id: 对象名
class:对象的模版类。(所有交给IOC容器来管理的类必须由无参构造,因为spring底层是通过反射来创建对象的,调用的是无参构造)
对象的成员变量通过property标签完成赋值
- name:成员变量名
- value: 成员变量值(基本数据类型,String可以直接赋值。如果是其他引用类型,不能通过value赋值)
- ref: 将IOC另一个bean赋值给当前的成员变量(DI)
<bean id="user" class="org.csu.entity.User"> <property name="age" value="19"></property> <property name="id" value="8"></property> <property name="name" value="黄波"></property> <property name="address" ref="address"></property> </bean> <bean id="address" class="org.csu.entity.Address"> <property name="id" value="78"></property> <property name="name" value="中南大学"></property> </bean>
IOC底层原理
- 读取配置文件,解析XML文件
- 通过反射机制实例化配置文件中所配置的所有bean
Spring的工厂方法
IOC通过工厂模式创建bean的方法有两种
- 静态工厂方法
- 实例工厂方法

京公网安备 11010502036488号