spring和springboot注解的使用
首先看一下ElementType取值范围:
//用于描述类、接口(包括注解类型) 或enum声明
TYPE,
//用于描述域
FIELD,
//用于描述方法
METHOD,
//用于描述参数
PARAMETER,
//用于描述构造器
CONSTRUCTOR,
//用于描述局部变量
LOCAL_VARIABLE,
//用于注解类型
ANNOTATION_TYPE,
//用于描述包
PACKAGE,
//该注解能使用在自定义类型参数(参数的自定义类型可以是javaBean或者枚举等)
TYPE_PARAMETER,
//可以在任意语句使用
TYPE_USE
@Bean
value:bean别名和name是相互依赖关联的,value,name如果都使用的话值必须要一致;
name:bean名称,如果不写会默认为注解的方法名称;
autowire:自定装配默认是不开启的,建议尽量不要开启,因为自动装配不能装配基本数据类型、字符串、数组等,这是自动装配设计的局限性,并且自动装配不如依赖注入精确;
initMethod:bean的初始化之前的执行方法,该参数一般不怎么用,因为完全可以在代码中实现;
destroyMethod:默认使用javaConfig配置的bean,如果存在close或者shutdown方法,则在bean销毁时会自动执行该方法,如果你不想执行该方法,则添加@Bean(destroyMethod="")来防止出发销毁方法;
@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 "(inferred)";
}
Autowire
NO(0),
BY_NAME(1),
BY_TYPE(2);