Spring 拆分配置文件的开发

拆分配置文件

多个程序员写同一个项目时,都会各自写一个自己的配置文件,到时写好的代码又怎么来访问多个配置文件呢?这篇会说到两种解决方法

配置文件一

<?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"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
       http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-4.2.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
       
       <!-- 类的实列注入到工厂 -->
       <!--
        	scope属性:
        		1、singleton:单列(默认值)
        		2、prototype:多列
        		3、request:WEB项目中,Spring创建一个Bean的对象,将对象存入到request域中
        		4、session:WEB项目中,Spring创建一个Bean的对象,将对象存入到session域中
        		5、globalSession:WEB项目中,应用在Porlet环境,如果没有Porlet环境那么globalSession相当于session
       -->
       <bean id="userDao" class="com.test.dao.impl.UserDaolmpl"></bean>
       
       
		<!-- 
			构造方法的方式注入属性(需要有对应的有参构造函数):
			创建实列同时就注入属性
		-->
       <bean id="user" class="com.test.domain.User">
       		<constructor-arg name="id" value="1"></constructor-arg>
       		<constructor-arg name="username" value="haoren"></constructor-arg>
       </bean>
       
       <!-- set 方法的方式注入属性(首先使用无参把实列创建起来,然后再调用对应的set方法来进行赋值) -->
       <bean id="user2" class="com.test.domain.User">
       		<property name="id" value="2"></property>
       		<property name="username" value="huairen"></property>
       </bean>
       
        <!-- 
        	Spring 的属性注入:对象类型的注入: 
        	ref属性:引用另一个 bean的 id或 name
        -->
       <bean id="order" class="com.test.dao.Order">
       		<property name="id" value="3"></property>
       		<property name="name" value="毛衣"></property>
       		<property name="user" ref="user"></property>
       </bean>
       <bean id="order4" class="com.test.dao.Order">
       		<property name="id" value="6"></property>
       		<property name="name" value="秋裤"></property>
       		<property name="user" ref="user"></property>
       </bean>
       
       <!-- 名称空间 p 的属性注入的方式:Spring2.x 版本后提供的方式 -->
       <bean id="user3" class="com.test.domain.User" p:id="4" p:username="大米"></bean>
       
       <!-- SpEL 的方式的属性注入:Spring3.x 版本后提供的方式 -->
       		<!-- SpEL的注入的方式 -->
       		<bean id="order2" class="com.test.dao.Order">
       			<property name="id" value="#{5}"/>
				<property name="name" value="#{'小米'}"/>
       		</bean>
       		<!-- 引用了另一个类的属性 -->
       		<bean id="order3" class="com.test.dao.Order">
       			<property name="id" value="#{order.id}"/>
				<property name="name" value="#{order2.name}"/>
       		</bean>
</beans>

配置文件二

<?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"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
       http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-4.2.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
       
       <!-- Spring的复杂类型的注入 -->
       <bean id="user4" class="com.test.domain.User">
       		<property name="username" value="复杂类型的注入"></property>
       		<property name="list">
       			<list>
       				<ref bean="order"/>
       				<ref bean="order4"/>
       			</list>
       		</property>
       </bean>
</beans>

一、创建工厂的时候加载多个配置文件

ApplicationContext ap = new ClassPathXmlApplicationContext(“applicationContext1.xml”,“applicationContext2.xml”);

package springpro1;

import java.util.Iterator;
import java.util.List;

import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.test.dao.Order;
import com.test.dao.UserDao;
import com.test.domain.User;


/*
 * ClassPathXmlApplicationContext:加载类路径下Spring的配置文件
 * FileSystemXmlApplicationContext:加载本地磁盘下Spring的配置文件
 * 
 * BeanFactory与ApplicationContext区别:
 * 		前者是在getBean的时候才会生成类的实列(在硬件比较差的地方使用)
 * 		后者在加载applicationContext.xml(容器启动)时候就会创建,占内存
 * 
 */
public class TestDemo1 {
	@Test
	public void test2() {
		ApplicationContext ap = new ClassPathXmlApplicationContext("applicationContext1.xml","applicationContext2.xml");
		
		User user = (User) ap.getBean("user");
		System.out.println(user.getId()+"     "+user.getUsername());
		
		User user2 = (User) ap.getBean("user2");
		System.out.println(user2.getId()+"     "+user2.getUsername());
		
		Order order = (Order) ap.getBean("order");
		System.out.println(order.getId()+"     "+order.getName()+"     "+order.getUser().getId()+"     "+order.getUser().getUsername());
		
		User user3 = (User) ap.getBean("user3");
		System.out.println(user3.getId()+"     "+user3.getUsername());
		
		Order order2 = (Order) ap.getBean("order2");
		System.out.println(order2.getId()+"     "+order2.getName());
		
		Order order3 = (Order) ap.getBean("order3");
		System.out.println(order3.getId()+"     "+order3.getName());
		
		
		System.out.println("------------------------------------------------------------------------------------------------");
		
		
		User user4 = (User) ap.getBean("user4");
		System.out.println(user4.getUsername());
		List<Order> list = user4.getList();               
		Iterator<Order> iterator = list.iterator();
		while(iterator.hasNext()) {
			Order next = iterator.next();
			System.out.println(next.getId()+"     "+next.getName()+"     "+next.getUser().getId()+"     "+next.getUser().getUsername());
		}
		
	}
}

二、在一个配置文件中包含另一个配置文件

建一个主配置文件,然后使用 import ,测试的时候就可以写主配置文件的名字了

<?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"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
       http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-4.2.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
       
       <import resource="applicationContext1.xml"></import>
       <import resource="applicationContext2.xml"></import>
</beans>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值