Spring装配Bean(四)

在JavaConfig中引用XML配置

存在使用JavaConfig配置的bean类

@Configuration
public class CDPlayerConfig {
	@Bean
	public CompactDisc sgtPeppers(){
		return new SgtPeppers();
	}
	@Bean
	public CDPlayer cdplayer(CompactDisc cd){
		return new CDPlayer(cd);
	}
}

如果两个bean在一个配置类中多了,将其中一个CompactDisc的Bean创建使用另一个配置类

-- CompactDisc Bean

@Configuration
public class CDConfig {
	@Bean
	public CompactDisc sgtPeppers(){
		return new SgtPeppers();
	} 
}

在原来的配置类中引入,上面这个配置类

-- CDPlayer Bean

@Configuration
@Import(value={CDConfig.class})
public class CDPlayerConfig {
	@Bean
	public CDPlayer cdplayer(CompactDisc cd){
		return new CDPlayer(cd);
	}
}

或者,将两个bean类都分离开来,最后在一个更高级的配置类中引入

@Configuration
@Import(value={CDConfig.class,CDPlayerConfig.class})
public class SoundSystemConfig {

}

假设,我们需要将CompactDisc的bean的创建配置到xml中,如下:


   		
   		
 		
 			
 				1
 				1
 				1
 				1
 			
 		
   

,那么在SoundSystemConfig中配置为

@Configuration
@Import(value={CDPlayerConfig.class})
@ImportResource(locations = "classpath:beans.xml")
public class SoundSystemConfig {

}

,两个Bean,定义在JavaConfig和Xml中的Bean最后都会加载到Spring容器中,最后整合Junit测试下:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={SoundSystemConfig.class})
public class Mytest {
	@Autowired
	private CDPlayer cdplayer;
	@Test
	public void run(){
		cdplayer.play();
	}
	public static void main(String[] args) {
		/*ClassPathXmlApplicationContext xf = new ClassPathXmlApplicationContext("beans.xml");
		CDPlayer te = (CDPlayer)xf.getBean("cdplayer");
		te.play();*/
	}
	
}

在XML配置中引用JavaConfig

在JavaConfig配置中,我们已经展现了如何使用@Import和@ImportResource来拆分JavaConfig类,

在XML中,可以使用import元素来拆分XML配置

1. 首先明确,CDConfig配置类,定义了CompactDiscBean

2. 在xml中定义CDPlayer的Bean,并引用CompactDisc的Bean如下


   
   
   
   	
   

这样的结果就是,bean元素引入的是JavaConfig的Bean,XML中定义另一个Bean

当然,可以将XML中定义的Bean写在另一个xml并引入,在root的xml中一般会再加载扫描包和注解元素

  
   
   
   
   
   
   
   
,最后,也整合Junit进行测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:beans.xml")
public class Mytest {
	@Autowired
	private CDPlayer cdplayer;
	@Test
	public void run(){
		cdplayer.play();
	}
	public static void main(String[] args) {
		/*ClassPathXmlApplicationContext xf = new ClassPathXmlApplicationContext("beans.xml");
		CDPlayer te = (CDPlayer)xf.getBean("cdplayer");
		te.play();*/
	}
	
}

最后,总结下Spring装载Bean的三种方式,Spring的核心是Spring容器

1. 自动装配,@Component和扫描包的元素完成Bean的创建,@AutoWire,@Inject完成注入

2. JavaConfig ,@Configuration完成配置类,配置类里面@Bean来定义Bean

3. XML里面Bean的创建,直接使用Bean元素引入


你可能感兴趣的:(Spring)