美文网首页
注解记录->Component、Configuration、Be

注解记录->Component、Configuration、Be

作者: 云鲸鱼rain | 来源:发表于2019-02-14 17:04 被阅读0次

    首先说一说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之中获取对象,所以得到的是同一个对象。(动态代理)

    相关文章

      网友评论

          本文标题:注解记录->Component、Configuration、Be

          本文链接:https://www.haomeiwen.com/subject/bhgeeqtx.html