Spring 基于XML方式装配Bean
本文主要记录,如何使用xml的方式专配bean.
使用xml装配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/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">
</beans>
User:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private String name;
private boolean sex;
private String[] hobby;
private List<Address> address;
private Set<String> tags;
}
Address:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Address {
private String name;
private String phone;
private String userAddress;
}
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" xmlns:p="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">
<!--user-->
<bean id="user" class="cn.sivan.pojo.User">
<property name="name" value="宁川"/>
<property name="sex" value="true"/>
<property name="hobby" ref="userHobby"/>
<property name="address" ref="userAddress"/>
<property name="tags" ref="tags"/>
</bean>
<!--address 1-->
<bean id="address1" class="cn.sivan.pojo.Address">
<property name="name" value="习惯"/>
<property name="phone" value="15922223333"/>
<property name="userAddress" value="地球村"/>
</bean>
<!--address 2-->
<bean id="address2" class="cn.sivan.pojo.Address">
<property name="name" value="习惯2"/>
<property name="phone" value="15922223333"/>
<!--注入null-->
<property name="userAddress">
<null/>
</property>
</bean>
<!--hobby-->
<p:list id="userHobby">
<value>music</value>
<value>basketball</value>
</p:list>
<!--list address-->
<p:list id="userAddress">
<ref bean="address1"/>
<ref bean="address2"/>
</p:list>
<!--tags-->
<p:set id="tags">
<!--注入特殊符号-->
<value><<java desc>></value>
<value><![CDATA[<<spring desc>>]]></value>
</p:set>
</beans>
Spring配置文件中常用XML标记说明
| 标 记 名 称 | 功 能 描 述 |
|---|---|
| beans | 整个配置文件的根节点,包含一个或多个Bean元素。在该标记中可配置命名空间与schema的装载路径,还可以通过default-init-method属性为该配置文件中的所有Bean实例统一指定初始化方法,通过default-destroy-method属性为该配置文件中的所有Bean实例统一指定销毁方法,通过default-lazy-init属性为该配置文件中的所有Bean实例统一指定是否进行迟延加载 |
| bean | 使用该标记定义一个Bean的实例化信息,用以指导Bean工厂正确地进行Bean的生产与装配。由class属性指定类全名,由id(推荐使用)或name属性指定生成的Bean实例名称。init-method属性指定初始化时要调用的方法,destroy-method属性实例销毁时要调用的方法。Bean实例的依赖关系可通过property子标记(set方式注入)或constructor-arg子标记(构造方式注入)来定义。bean标记中的scope属性用以设定Bean实例的生成方式,当scope设置为singleton或默认时以单例模式生成,当scope设置为prototype时则以原型(多例)模式生成。 |
| constructor-arg | 它是bean标记的子标记,用以传入构造参数进行实例化,这也是注入依赖关系的一种常见方式。index属性指定构造参数的序号(从0开始),当只有一个构造参数是通常省略不写;type属性指定构造参数的类型,当为基本数据类型时亦可省略此属性;参数值可通过ref属性或value属性直接指定,也可以通过ref或value子标记指定 |
| property | 它是bean标记的子标记,用以调用Bean实例中的相关Set方法完成属性值的赋值,从而完成依赖关系的注入。name属性指定Bean实例中的相应属性名称,属性值可通过ref属性或value属性直接指定,也可以通过ref或value子标记指定 |
| ref | 该标记通常作为constructor-arg、property、list、set、entry等标记的子标记,由bean属性指定一个Bean工厂中某个Bean实例的引用 |
| value | 该标记通常作为constructor-arg、property、list、set、entry等标记的子标记,用以直接指定一个常量值 |
| list | 该标记用以封装List或数组类型属性的依赖注入(即赋值),具体的元素通过ref或value子标记指定 |
| set | 该标记用以封装Set类型属性的依赖注入(即赋值),具体的元素通过ref或value子标记指定 |
| map | 该标记用以封装Map类型属性的依赖注入(即赋值),具体的元素通过entry子标记指定 |
| entry | 该标记通常用做map标记的子标记,用以设置一个“键/值”对。key属性接收字符串类型的“键”名称,“值”则可由ref或value子标记指定 |
| props | 该标记用以封装Properties类型属性的依赖注入(即赋值),具体的元素通过prop子标记指定 |
| prop | 该标记通常用做props标记的子标记,用以设置一个“键/值”对。key属性接收字符串类型的“键”名称,“值”则可放置在prop标记体内 |
| null | 该标记用于赋一个null值,与在Java中直接为某个属性赋null值效果等同 |

浙公网安备 33010602011771号