美文网首页
关于 @Bean 注解的一些小细节

关于 @Bean 注解的一些小细节

作者: 咪雅先森 | 来源:发表于2019-04-15 23:09 被阅读0次

    先看下 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;
    }
    

    Target 中指定了注解的使用范围是METHONANNOTATION_TYPE,就是限定方法 和 注解上可以使用。

    @Target(ElementType.METHOD) //方法
    @Target(ElementType.ANNOTATION_TYPE)//注解

    value -- bean别名和name是相互依赖关联的,value,name如果都使用的话值必须要一致
    name -- bean名称,如果不写会默认为注解的方法名称
    autowire -- 自定装配默认是不开启的,建议尽量不要开启,因为自动装配不能装配基本数据类型、字符串、数组等,这是自动装配设计的局限性,以及自动装配不如显示依赖注入精确
    Spring引入Autowire(自动装配)机制就是为了解决<bean>标签下<property>标签过多的问题,<property>标签过多会引发两个问题:

    • 如果一个Bean中要注入的对象过多,比如十几二十个(这是很正常的),那将导致Spring配置文件非常冗长,可读性与维护性差
    • 如果一个Bean中要注入的对象过多,配置麻烦且一不小心就容易出错
      default-autowire有四种取值:
    • no:默认,即不进行自动装配,每一个对象的注入比如依赖一个<property>标签
    • byName:按照beanName进行自动装配,使用setter注入
    • byType:按照bean类型进行自动装配,使用setter注入
    • constructor:与byType差不多,不过最终属性通过构造函数进行注入

    通过测试类,可以看到这个注解的

    /**
     * @author liukai
    * @data 2019/4/15 21:53.
     */
    @Configuration
    public class ConfigTest {
    
        @Bean(name = "config_test")
        public User user () {
            User user = new User();
            user.setAuthor("liu big big");
            user.setName("刘大大");
            return user;
        }
    
    
        public static void main(String[] args) {
            AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext();
            ac.register(ConfigTest.class);
            ac.refresh();
            User user = (User) ac.getBean("config_test");
            System.out.println(user.getAuthor());
            System.out.println(user.getName());
        }
    }
    

    //liu big big
    //刘大大

    相关文章

      网友评论

          本文标题:关于 @Bean 注解的一些小细节

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