一、p名称空间的属性注入(版本:Spring2.5以后的)
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
主要是引入了
xmlns:p="http://www.springframework.org/schema/p"
使用方法
<!-- p名称空间的属性注入的写法 -->
<bean id="car2" class="com.java.spring.demo1.Car2"
p:name="奔驰" p:price="10000" ></bean>
SpEL的属性注入(Spring3.0以后)
- SpEL:Spring Expression Language,Spring的表达式语言
- 语法
- #{SpEL}
- 语法
SePL属性的注入
<!-- SePL属性的注入
value是字符串的时候要用单引号-->
<bean id="car2" class="com.java.spring.demo1.Car2" >
<property name="name" value="#{'瑞虎'}" ></property>
<property name="price" value="#{3000}" ></property>
</bean>
SePL属性的注入 :对象的方式
<!-- SePL属性的注入 :对象的方式-->
<bean id="employee" class="com.java.spring.demo1.Employee" >
<property name="name" value="#{'张三'}" ></property>
<property name="car2" value="#{car2}" ></property>
</bean>
集合属性的注入
新建一个CollectionBean类
package com.java.spring.demo2;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class CollectionBean {
private String[] arrs;
private List<String> list;
private Set<String> set;
private Map<String, String> map;
public void setArrs(String[] arrs) {
this.arrs = arrs;
}
public void setList(List<String> list) {
this.list = list;
}
public void setSet(Set<String> set) {
this.set = set;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
@Override
public String toString() {
return "CollectionBean [arrs=" + Arrays.toString(arrs) + ", list=" + list + ", set=" + set + ", map=" + map
+ "]";
}
}
applicationContext.xml配置文件
<beans>
<!-- Spring集合属性的注入=============== -->
<!-- 注入数组类型 -->
<bean id="collectionBean" class="com.java.spring.demo2.CollectionBean" >
<property name="arrs">
<list>
<value>张三</value>
<value>李四</value>
<value>王五</value>
</list>
</property>
<!-- 注入list集合 -->
<property name="list">
<list>
<value>小明</value>
<value>小度</value>
<value>小爱</value>
</list>
</property>
<!-- 注入set集合 -->
<property name="set">
<set>
<value>aa</value>
<value>bb</value>
<value>cc</value>
</set>
</property>
<!-- 注入Map集合 -->
<property name="map">
<map>
<entry key="aaa" value="111"/>
<entry key="bbb" value="222"/>
<entry key="ccc" value="333"/>
</map>
</property>
</bean>
</beans>
测试类
public void demo1() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
CollectionBean collectionBean = (CollectionBean)applicationContext.getBean("collectionBean");
System.out.println(collectionBean);
}
Spring分模块配置
方法一( 在加载配置文件的时候,加载多个)
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- spring属性注入的方式 使用构造方法的方式-->
<bean id="car" class="com.java.spring.demo1.Car" >
<constructor-arg name="name" value="宝马" />
<constructor-arg name="price" value="80000"/>
</bean>
<!-- set方法的方式 -->
<!-- <bean id="car2" class="com.java.spring.demo1.Car2" >
<property name="name" value="奔驰"/>
<property name="price" value="90000"/>
</bean> -->
<!-- 改为p名称空间的属性注入 -->
<!-- set方法注入对象类型的属性 -->
<!-- <bean id="employee" class="com.java.spring.demo1.Employee">
value:设置普通类型的值 ref:设置其他类的id或name
<property name="name" value="张三"/>
<property name="car2" ref="car2"/>
</bean> -->
<!-- SePL属性的注入 -->
<bean id="car2" class="com.java.spring.demo1.Car2" >
<property name="name" value="#{'瑞虎'}" ></property>
<property name="price" value="#{3000}" ></property>
</bean>
<bean id="employee" class="com.java.spring.demo1.Employee" >
<property name="name" value="#{'张三'}" ></property>
<property name="car2" value="#{car2}" ></property>
</bean>
</beans>
applicationContext2.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Spring集合属性的注入=============== -->
<!-- 注入数组类型 -->
<bean id="collectionBean" class="com.java.spring.demo2.CollectionBean" >
<property name="arrs">
<list>
<value>张三</value>
<value>李四</value>
<value>王五</value>
</list>
</property>
<!-- 注入list集合 -->
<property name="list">
<list>
<value>小明</value>
<value>小度</value>
<value>小爱</value>
</list>
</property>
<!-- 注入set集合 -->
<property name="set">
<set>
<value>aa</value>
<value>bb</value>
<value>cc</value>
</set>
</property>
<!-- 注入Map集合 -->
<property name="map">
<map>
<entry key="aaa" value="111"/>
<entry key="bbb" value="222"/>
<entry key="ccc" value="333"/>
</map>
</property>
</bean>
</beans>
测试类中加载配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml","applicationContext2.xml");
方法二
在一个配置文件中引入多个配置文件
在applicationContext.xml引入applicationContext2.xml
<import resource="applicationContext2.xml" />
然后在测试类中直接加载applicationContext.xml就可以了,效果是一样的,但是当配置文件多的时候使用方法二比较简洁