Spring学习之Spring三种装配机制:(二)显示装配bean

  今天我们介绍一下Spring三种装配机制中的另外两种装配方式:JavaConfigXML配置,这两种方式区别于自动化装配方式都属于显示装配。

1、Java代码装配bean

首先,我们通过在Config类中使用@Bean注解来声明bean;
@Bean注解会告诉Spring其注解的方法会返回一个对象,该对象要注册为Spring上下文中的bean。
@Bean(name = “id”) :我们可以通过这种方式设置bean的ID,例如一个ID名为“id”的bean。

@Configuration
public class CDPlayerConfiger {
    @Bean
     //通过该注解实现java代码装配bean
    public CompactDisc sgtPeppers(){
        return new SgtPeppers();
    }
    @Bean
    public CDPlayer cdPlayer(){
    	//依赖于 CompactDisc 的bean
        return new CDPlayer(sgtPeppers());
    }
}

在声明bean完成后,即可在测试中通过@Autowired注解实现自动注入或通过下面的代码

 ApplicationContext acx = new AnnotationConfigApplicationContext(CDPlayerConfiger.class);
 CDPlayer cdPlayer = (CDPlayer) acx.getBean("cdPlayer");

来获得bean。

注意: 在使用@Bean注解得到目标对象的bean这个过程好像是通过调用@bean注解的方法来实现的。
   实际上,在每次调用@bean注解的方法时,Spring会对其调用进行拦截,然后直接将Spring上下文中的bean实例(该实例也是通过调用方法实现的,但是仅调用一次)进行返回。也就是说不论调用几次最后得到的是同一个bean

   默认情况下:Spring中的bean都是单例的


/**
 *      这里得到的两个bean实际上是同一个bean
 */
    @Bean
    public CDPlayer cdPlayer(){
        return new CDPlayer(sgtPeppers());
    }
    @Bean
    public CDPlayer anotherCdPlayer(){
        return new CDPlayer(sgtPeppers());
    }

2、XML配置

XML配置是Spring刚出现时的主要方式,因此有必要了解掌握XML配置;





	
	    
	    
	    
	      
	        Sgt. Pepper's Lonely Hearts Club Band
	        With a Little Help from My Friends
	      
	    
	  
	 
	  
	    
	    



在上面的配置文件中,我们看到:
1、可以通过标签来装配bean,我们可以设置id,并利用class=“全路径类名”的方式来声明bean;
2、我们可以借助元素来使用构造器注入初始化bean;value值为构造器输入参数(可以为list列表);
3、在ID为cdPlayer的bean的声明中,我们可以将一个ID为compactDisc的bean引用传给CDPlayer的构造器。

此外:我们还可以通过c- 命名空间和 p- 命名空间来实现构造器注入设置属性;在使用命名空间时,需要我们进行如下声明:

		xmlns:c="http://www.springframework.org/schema/c"
		xmlns:p="http://www.springframework.org/schema/p"

这里我们不再做过多介绍XML配置。

你可能感兴趣的:(Spring学习之Spring三种装配机制:(二)显示装配bean)