配置文件内容过多修改起来维护起来很麻烦。Struts 2可以在总的配置文件中引入其他的配置文件。这是一种办法。第二种办法在加载配置文件的时候,里面可以一次性传多个。
<?xml version="1.0" encoding="UTF-8"?>
<!-- 别去schema,schema是文件,本地的文件,你得引那个头 --> <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"> <!-- demo6Bean的集合属性的注入 ==============================================================--> <bean id="collectionBean" class="cn.itcast.spring3.demo6.CollectionBean"> <!-- 注入List集合 --> <property name="list">
<list>
<value>童童</value>
<value>小凤</value>
</list>
</property> <!-- 注入set集合 --> <property name="set">
<set>
<value>杜宏</value>
<value>如花</value>
</set>
</property> <!-- 注入map集合 --> <property name="map"> <map>
<entry key="刚刚" value="111"></entry>
<entry key="娇娇" value="333"></entry> </map> </property>
<property name="properties">
<props>
<prop key="username">root</prop> <!-- prop有key和value的形式,属性文件就是key和value的形式 --> <prop key="password">123</prop>
</props>
</property> </bean> </beans>
<?xml version="1.0" encoding="UTF-8"?>
<!-- 别去schema,schema是文件,本地的文件,你得引那个头 --> <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">
<!-- demo1快速入门================================================= -->
<!-- 把接口和实现类在这个配置文件中配置,有了实现类的全路径之后到时候才能用工厂反射 --> <!-- 通过一个<bean>标签来设置类的信息,通过id属性为类起个标识. -->
<!-- 接口,实现类,配置文件也都有了 -->
<!-- 现在有一个工厂Spring为我们提供好了,其实就是解析这个XML文件 -->
<!-- 这个工厂你自己写会不会写?你用dom4j找里面的bean标签,找到class的属性值,然后就可以Class.forName()反射生成类的实例.其实Spring
也是这么做的,只不过工厂由Spring提供好了
-->
<bean id="helloService" class="cn.itcast.spring3.demo1.HelloServiceImpl">
<!-- 使用<property>标签注入属性
value指的是普通值
ref指的是对象
-->
<property name="info" value="传智播客"></property>
</bean>
<!-- demo1快速入门 -->
<!-- demo2Bean的实例化 -->
<!-- 默认情况下使用的就是无参数的构造方法. -->
<!--
<bean id="bean1" class="cn.itcast.spring3.demo2.Bean1"></bean>
-->
<!--
<bean name="bean1" class="cn.itcast.spring3.demo2.Bean1"></bean>
-->
<!-- 第二种使用静态工厂实例化 不能写class了,因为现在不是由Spring直接帮你创建对象了-->
<!--
<bean id="bean2" class="cn.itcast.spring3.demo2.Bean2Factory" factory-method="getBean2"></bean>
-->
<!-- 第三种使用实例工厂实例化 -->
<!--
<bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean>
-->
<!-- 要先把Bean3Factory实例化 -->
<!--
<bean id="bean3Factory" class="cn.itcast.spring3.demo2.Bean3Factory"></bean>
-->
<!-- demo2Bean的实例化====================== end--> <!-- demo3Bean的作用范围======================= -->
<!--
<bean id="customer" class="cn.itcast.spring3.demo3.Customer" scope="prototype"></bean>
-->
<!--
<bean id="product" class="cn.itcast.spring3.demo3.Product" init-method="setup" destroy-method="teardown" scope="singleton">
<property name="name" value="空调">-->
<!-- 把Product类的属性name注入进来 -->
<!--
</property>
</bean>
--> <!-- demo4Bean的生命周期======================= -->
<!--
<bean id="customerService" class="cn.itcast.spring3.demo4.CustomerServiceImpl" init-method="setup" destroy-method="teardown"> <property name="name" value="itcast"></property>
</bean>
-->
<!-- 后处理Bean是由Spring容器自动调用不用你管,我们起个id是为了我们在程序中去获得它。但是这个类不用由我们获得, 由Spring自动调用。cn.itcast.spring3.demo4.MyBeanPostProcessor是后处理Bean-->
<!-- <bean class="cn.itcast.spring3.demo4.MyBeanPostProcessor"></bean>-->
<!-- demo5Bean的属性注入=====================================================================================================================================-->
<!-- 构造方法的注入 -->
<bean id="car" class="cn.itcast.spring3.demo5.Car">
<constructor-arg name="name" value="宝马"><!-- 通过这个标签为类注入属性 -->
</constructor-arg>
<constructor-arg name="price" value="1000000"><!-- 通过这个标签为类注入属性 -->
</constructor-arg>
<!--
<constructor-arg index="0" type="java.lang.String" value="奔驰">--><!-- 通过这个标签为类注入属性 -->
<!-- </constructor-arg>-->
<!--
<constructor-arg index="1" type="java.lang.Double" value="2000000">--><!-- 通过这个标签为类注入属性 --> <!-- </constructor-arg>-->
</bean>
<!--
<bean id="car2" class="cn.itcast.spring3.demo5.Car2">
-->
<!-- <property>标签中name就是属性名称,value是普通属性的值,
ref:引用其他的对象
-->
<!--
<property name="name" value="保时捷奇瑞QQ"></property>
<property name="price" value="500000020000"></property>
</bean>
-->
<!-- p名称空间的写法
<bean id="car2" class="cn.itcast.spring3.demo5.Car2" p:name="宝马" p:price="400000">
</bean>
-->
<!-- SpEL写法 -->
<bean id="car2" class="cn.itcast.spring3.demo5.Car2" >
<property name="name" value="#{'大众'}"></property>
<property name="price" value="#{'120000'}"></property>
</bean> <!--
<bean id="person" class="cn.itcast.spring3.demo5.Person">
<property name="name" value="任童"></property>
<property name="car2" ref="car2"></property>
</bean>
--> <!-- p名称空间的写法 -->
<!--
<bean id="person" class="cn.itcast.spring3.demo5.Person" p:name="童童" p:car2-ref="car2">
</bean>
-->
<!-- SpEL写法 -->
<bean id="person" class="cn.itcast.spring3.demo5.Person">
<!--
<property name="name" value="#{'小边'}"></property>
-->
<!--
<property name="name" value="#{personInfo.name}"></property>
-->
<property name="name" value="#{personInfo.showName()}"></property>
<property name="car2" value="#{car2}"></property> </bean> <!--
<property name="name" value="任童"></property>
<property name="car2" ref="car2"></property>
-->
<bean id="personInfo" class="cn.itcast.spring3.demo5.PersonInfo">
<property name="name" value="张三"></property> </bean>
<!-- demo5Bean的属性的注入============================================================== -->
<!-- demo6Bean的集合属性的注入 ==============================================================-->
<!--
<bean id="collectionBean" class="cn.itcast.spring3.demo6.CollectionBean">
-->
<!-- 注入List集合 -->
<!--
<property name="list">
<list>
<value>童童</value>
<value>小凤</value>
</list>
</property>
-->
<!-- 注入set集合 -->
<!--
<property name="set">
<set>
<value>杜宏</value>
<value>如花</value>
</set>
</property>
-->
<!-- 注入map集合 -->
<!--
<property name="map"> <map>
<entry key="刚刚" value="111"></entry>
<entry key="娇娇" value="333"></entry> </map> </property>
<property name="properties">
<props>
<prop key="username">root</prop>
-->
<!-- prop有key和value的形式,属性文件就是key和value的形式 -->
<!--
<prop key="password">123</prop>
</props>
</property>
</bean>
--> <import resource="applicationContext2.xml"/> <!-- 配置文件引入 -->
</beans>
package cn.itcast.spring3.demo6; import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringTest6 {
@Test
public void demo1(){//注入list
//ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml","applicationContext2.xml");
CollectionBean collectionBean = (CollectionBean) applicationContext.getBean("collectionBean"); System.out.println(collectionBean); }
}