p名称空间的属性注入、集合属性的注入以及Spring分模块配置

一、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就可以了,效果是一样的,但是当配置文件多的时候使用方法二比较简洁

猜你喜欢

转载自blog.csdn.net/Woo_home/article/details/89599811