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的配置文件.

扫描二维码关注公众号,回复: 2970195 查看本文章

三 .@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的名字就是方法的名字.

猜你喜欢

转载自www.cnblogs.com/trekxu/p/9563161.html
001
今日推荐