Spring6 探析之@Bean 注解
Spring6 探析之@Bean 注解
介绍
@Bean 是spring的常用注解,他可以标记在方法和注解上,可以将方法的返回值放在IOC容器中,它又以下特点
- 单例
- 可指定bean的名称
- 可控制bean的初始化与销毁方法
让我们看一下@Bean的源码吧
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Bean {
@AliasFor("name")
String[] value() default {};
@AliasFor("value")
String[] name() default {};
boolean autowireCandidate() default true;
String initMethod() default "";
String destroyMethod() default AbstractBeanDefinition.INFER_METHOD;
}
- value 与 name 字段,可指定bean的名字
- autowireCandidate 为 5.1的新功能,是否能自动按照类型注入到其他bean中,该字段只对@Autowired有效,对@Resource 无效
- initMethod 指定bean初始化方法名称
- destroyMethod 指定bean销毁的方法名称
实例
我们在bean的创建和销毁时,自定义初始化和销毁的方法试一下!
新建一个 Person bean,里面除了字段外,还有自定义了两个方法
我们将 Person bean 注入到IOC容器中,并指定初始化和销毁的方法名称
跑一个案例测试一下
输出如下
可以看到,我们自定义的初始化和销毁的方法运行成功了