Spring6 探析之@Bean 注解

发布时间 2023-05-26 13:23:10作者: acdongla

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,里面除了字段外,还有自定义了两个方法

image-20230526131740278

我们将 Person bean 注入到IOC容器中,并指定初始化和销毁的方法名称

image-20230526131810813

跑一个案例测试一下

image-20230526131826800

输出如下

image-20230526131844558

可以看到,我们自定义的初始化和销毁的方法运行成功了