001 通過@Configuration和@Bean注解給容器添加Bean


一 . 概述

  在之前我們使用spring的時候,大多數的時候都是通過xml進行bean的配置.

  在spring3.0之后,出現了編程式的配置,在后面的springboot之中被大量的采用,

  本節,我們學習給容器之中添加Bean.


 

二 .@Configuration 注解

  本注解的作用主要有兩個:

  我們首先看它的定義:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {

    String value() default "";

}

我們從上面的定義中可以看到,這個注解實際上就是一個@Component.因此,這個被注解標記的類會被加入到spring容器之中.

在這個被該注解標記的類之中,我們可以添加給中Bean,我們稱這中類為配置類.

我們可以認為這樣的類就是一個spring的配置文件.


 

三 .@Bean

我們首先看一下這個注解的定義:  

@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Bean {
   
    @AliasFor("name")
    String[] value() default {};
  
    @AliasFor("value")
    String[] name() default {};
   
    Autowire autowire() default Autowire.NO;
   
    String initMethod() default "";
  
    String destroyMethod() default AbstractBeanDefinition.INFER_METHOD;

}

我們發現這個注解可以標記在方法和注解上面,我們主要標記在方法上.

  被標記的方法的返回值會被加入到springIOC容器之中.

  我們看注解的屬性,我們就可以為這個bean指定名字,指定初始化和銷毀的方法.


四 .實例演示

 我們首先創建一個類,如下. 

public class Person {

    private String name;

    private Integer age;

我們聲明一個配置類,並加入這個類的實例到IOC容器之中.

@Configuration
public class PersonConfig {

    @Bean
    public Person person() {
        Person person = new Person();
        person.setName("trek");
        person.setAge(22);
        return person;
    }
}

我們現在做測試,具體如下:  

@ContextConfiguration(classes= {PersonConfig.class})
@RunWith(SpringJUnit4ClassRunner.class)
public class PersonTest {

    @Resource
    private ApplicationContext context ;
    
    
    @Test
    public void test() {
        System.out.println(context.getBean("person"));
    }
}

通過上面的測試例子,我們可以知道,默認的bean的名字就是方法的名字.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM