Spring 简单案例(依赖注入)_02

      上一篇是注解注入一个bean,这篇就是XML配置注入一个bean

     废话不多说直接上代码,首先是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:c="http://www.springframework.org/schema/c"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="classAId" class="com.expect.oa.entity.ClassA"></bean>

    <bean id="classBId" class="com.expect.oa.entity.ClassB">
        <!-- 这嘎达用的是构造函数注入,注入了一个对象,跟两个字符串 -->
    	<constructor-arg ref="classAId"></constructor-arg>
    	<constructor-arg name="string1" value="some string1"></constructor-arg>
    	<constructor-arg name="string2" value="some string2"></constructor-arg>
    </bean>
    
    <bean id="classCId" class="com.expect.oa.entity.ClassC">
        <!-- 这嘎达也是用的构造函数注入,注入了一个ArrayLisy<String> -->
    	<constructor-arg>
    		<list>
    			<value>Lin</value>
    			<value>Chirs</value>
    			<value>Biger</value>
    		</list>
    	</constructor-arg>
    </bean>
    
    <!-- 这嘎达是属性注入,注入一个对象 -->
    <bean id="classDId" class="com.expect.oa.entity.ClassD">
    	<property name="aEntity" ref="classAId"></property>
    </bean>
    
    <!-- 这嘎达是注解的配置文件 -->
    <bean id="SpringXMLconfig_other" class="com.expect.oa.config.SpringXMLconfig_other" />
    
</beans>

     上面的配置,是以XML为主,也可以注解的方式:
package com.expect.oa.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.ImportResource;

import com.expect.oa.entity.ClassE;
import com.expect.oa.entity.ClassF;

@Configuration
@Import(value={SpringXMLconfig.class})
@ImportResource(locations={"classpath:spring/ApplicationContext.xml"})
public class SpringXMLconfig_other {

	@Bean
	public ClassF getClassF(ClassE fEntity){
		return new ClassF(fEntity);
	}
	
}

     这是其中一个配置,包含在上面咯:
package com.expect.oa.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.expect.oa.entity.ClassE;

@Configuration
public class SpringXMLconfig {

	@Bean
	public ClassE  getClassE (){
		return new ClassE();
	}
	
}

     下面开始声明几个类:
package com.expect.oa.entity;

public class ClassA {

}

package com.expect.oa.entity;

public class ClassB {

	private ClassA aEntity;

	private String string1;
	
	private String string2;
	
	public ClassB(ClassA aEntity){
		this.aEntity = aEntity;
	}
	
	public ClassA getaEntity() {
		return aEntity;
	}

	public void setaEntity(ClassA aEntity) {
		this.aEntity = aEntity;
	}

	public String getString1() {
		return string1;
	}

	public void setString1(String string1) {
		this.string1 = string1;
	}

	public String getString2() {
		return string2;
	}

	public void setString2(String string2) {
		this.string2 = string2;
	}

	public ClassB(ClassA aEntity, String string1, String string2) {
		super();
		this.aEntity = aEntity;
		this.string1 = string1;
		this.string2 = string2;
	}

}

package com.expect.oa.entity;

import java.util.List;

public class ClassC {

	private List<String> names;

	public List<String> getNames() {
		return names;
	}

	public void setNames(List<String> names) {
		this.names = names;
	}

	public ClassC(List<String> names) {
		super();
		this.names = names;
	}
	
	
}

package com.expect.oa.entity;

public class ClassD {

	ClassA aEntity;

	public ClassA getaEntity() {
		return aEntity;
	}

	public void setaEntity(ClassA aEntity) {
		this.aEntity = aEntity;
	}

}

package com.expect.oa.entity;

public class ClassE {

}

package com.expect.oa.entity;

public class ClassF {

	private ClassE eEntity;

	public ClassF(ClassE eEntity){
		this.eEntity = eEntity;
	}

	public ClassE geteEntity() {
		return eEntity;
	}

	public void seteEntity(ClassE eEntity) {
		this.eEntity = eEntity;
	}
}

     准备工作完毕了,下面我们测试吧:
package com.expect.oa.test;

import javax.annotation.Resource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.expect.oa.entity.ClassB;
import com.expect.oa.entity.ClassC;
import com.expect.oa.entity.ClassD;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:spring/ApplicationContext.xml"})
public class TestXMLSpringDI {

	@Resource(name="classBId")
	ClassB bEntity;
	
	//通过构造函数构造了一个对象成员变量,跟两个字符串变量。
	
	@Test
	public void test() {
		System.out.println(bEntity.getString1());
		System.out.println(bEntity.getaEntity());
	}

	@Resource(name="classCId")
	ClassC cEntity;
	
	//构造一个list
	
	@Test
	public void testXmlDi (){
		for (int i = 0;i<3;i++){
			String name = cEntity.getNames().get(i);
			System.out.println(name);
		}
	}
	
	@Resource(name="classDId")
	ClassD dEntity;
	
	//属性注入对象
	
	@Test
	public void testXmlPropertyDi (){
		System.out.println(dEntity.getaEntity());
	}
}

     测试一XML配置为主的配置:
package com.expect.oa.test;

import javax.annotation.Resource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.expect.oa.entity.ClassD;
import com.expect.oa.entity.ClassF;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:spring/ApplicationContext.xml"})
public class TestSpringXMLConfig {

	//这里是通过注解配置的
	@Autowired
	ClassF fEntity;
	
	@Test
	public void test() {
		System.out.println(fEntity.geteEntity());
	}
	
	//属性注入对象,这里是通过XML配置的
	@Resource(name="classDId")
	ClassD dEntity;
	
	@Test
	public void testXmlPropertyDi (){
		System.out.println(dEntity.getaEntity());
	}
	
}

     测试以注解为主的配置:
package com.expect.oa.test;

import javax.annotation.Resource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.expect.oa.config.SpringXMLconfig_other;
import com.expect.oa.entity.ClassD;
import com.expect.oa.entity.ClassF;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {SpringXMLconfig_other.class})
public class TestSpringConfig {
	//这里是通过注解配置的
	@Autowired
	ClassF fEntity;
	
	@Test
	public void test() {
		System.out.println(fEntity.geteEntity());
	}
	
	//属性注入对象,这里是通过XML配置的
	@Resource(name="classDId")
	ClassD dEntity;
	
	@Test
	public void testXmlPropertyDi (){
		System.out.println(dEntity.getaEntity());
	}

}

猜你喜欢

转载自aa80303857.iteye.com/blog/2296870