Spring5源码学习之IOC的Bean管理
1 Bean管理概述
Bean 管理指的是两个操作:
- Spring创建对象
- Spring注入属性
Bean管理操作的两种方式:
- 基于xml配置文件方式实现
- 基于注解方式实现
2 Bean管理操作之XML
1 基于xml方式创建对象
如入门案例中:
<bean id="user" class = "com.cf.spring5.User"></bean>
- 在spring配置文件中,使用bean标签,标签里面添加对应属性,就可以实现对象创建
- 在bean标签中有很多属性,常用的有:
- id属性 唯一标识
- class属性 类全路径
- 创建对象时候,默认执行的是无参构造器方法创建对象
2 基于xml方式注入属性
DI 依赖注入,给对象注入属性
1 使用set方法注入
1 创建案例类
public class Book {
// 创建属性
private String bname;
private String bauthor;
// 创建属性对应的 set 方法
public void setBname(String bname) {
this.bname = bname;
}
public void setBauthor(String bauthor) {
this.bauthor = bauthor;
}
}
2 在spring配置文件配置对象创建,配置属性注入
<bean id="book" class="com.atguigu.spring5.Book">
<!--使用 property 完成属性注入
name:类里面属性名称
value:向属性注入的值
-->
<property name="bname" value="六脉神剑"></property>
<property name="bauthor" value="段誉"></property>
</bean>
2 使用有参构造注入
1 创建案例类
public class Orders {
// 属性
private String oname;
private String address;
// 有参数构造
public Orders(String oname,String address) {
this.oname = oname;
this.address = address;
}
}
2 在spring配置文件配置对象创建,配置属性注入
<bean id="orders" class="com.atguigu.spring5.Orders">
<constructor-arg name="oname" value="电脑"></constructor-arg>
<constructor-arg name="address" value="China"></constructor-arg>
</bean>
3 p名称空间注入
使用p名称空间注入,可以简化基于xml配置方式
1 添加p名称空间在配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
2 进行属性注入,在bean标签里面进行操作
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="book" class="com.cf.spring5.Book" p:bname="独孤九剑"
p:bauthor="无名氏"></bean>
</beans>