注解记录->Component、Configuration、Be

2019-02-14  本文已影响0人  云鲸鱼rain

首先说一说Component和Bean。

这两个注解的目的都是一致的:注册bean到spring容器当中。
区别在于用法,场景。
Component:用在类上的注解。
Bean:用在方法上的注解。
使用场景:一般情况下能使用Component注册到spring容器当中的,就会使用Component,什么时候Component不能使用了,这时候加上Bean。(当然一些场景两个注解都可以用。)

1、举例Component使用场景。

@Component
public class AnnoConfig {

    public String sayHello() {
        return "Hello!";
    }

}
    @Autowired
    private AnnoConfig annoConfig;

    @GetMapping("/sayHello")
    public void sayHello() {
        System.out.println(annoConfig.sayHello());
    }

2、举例Component注解替换为Component和Bean组合的使用场景。

@Component
public class AnnoConfig {

    @Bean
    public AnnoConfig getAnnoConfig() {
        return new AnnoConfig();
    }
}

    @Autowired
    private AnnoConfig getAnnoConfig;

    @GetMapping("/sayHello")
    public void sayHello() {
        System.out.println(getAnnoConfig.sayHello());
    }

3、只能使用Component和bean组合的场景

当需要将第三方类库注入spring容器时。

接着说一说Configuration和Bean。
Configuration注解写的位置和Component基本一致,就不贴代码了,但是底层运行有着本质的区别。
这个链接地址的博主说的也很清楚。
https://blog.csdn.net/long476964/article/details/80626930

Component不会为其生成CGLIB代理Class,每次执行方法的时候,就会new一次对对象。(每次都是不同的对象)
Configuration注解使用时,会生成当前对象的子类Class,并对方法拦截,第二次调用car()方法时直接从BeanFactory之中获取对象,所以得到的是同一个对象。(动态代理)

上一篇下一篇

猜你喜欢

热点阅读