基本使用
Spring框架两大核心机制
- IOC 反转/DI依赖注入
- AOP面向切面
什么是控制反转
在spring里创建对象的工作不再是调用者来完成,而是交给IOC容器来创建,再推送给调用者,整个流程完成反转,所以是控制反转
IOC实现了解耦合
例子:
创建maven 工程,添加依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.11.RELEASE</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
dom4j用于解析xml
通过IOC创建对象,在配置文件中添加需要管理的对象,XML配置文件文件名可以自定义
放在source的文件夹底下
spring.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="student" class="cn.learnbyheart.bean.Student">
<property name="age" value="11"></property>
<property name="id" value="1"></property>
<property name="name" value="gy"></property>
</bean>
使用bean标签来创建对象
propert标签里的name的pojo类的属性
Test类
public class Test {
public static void main(String[] args) {
// 加载配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
Student student = (Student) context.getBean("student");
System.out.println(student);
}
}
getBean()里的参数是spring.xml里bean标签的id
配置文件
- 通过配置文件bean标签来完成对象的管理
- id 对象名
- class : 对象模板类(所有交给IOC容器管理的类必须有无参构造函数,因为spring底层是通过反射机制来创建对象的,调用的无参构造)
- 对象的成员变量通过 property标签完成赋值
- property里的name:成员变量名
- value:成员变量值(基本类型,String类型可以直接赋值,但是引用类型不可以)
- ref: 将IOC的另外一个bean 赋给当前的成员变量(DI)
ref使用
<bean id="student" class="cn.learnbyheart.Student">
<property name="age" value="11"></property>
<property name="id" value="1"></property>
<property name="name" value="gy"></property>
<property name="address" ref="address"></property>
</bean>
<bean id="address" class="cn.learnbyheart.Address">
<property name="id" value="2"></property>
<property name="name" value="hhh"></property>
</bean>
引用另一个对象时使用ref, 也就是依赖注入
IOC 底层原理实现 读取配置文件,解析xml 通过反射机制实例化配置文件中所配置所有的bean