首页 > 其他分享 >Spring6 探析之@Bean 注解

Spring6 探析之@Bean 注解

时间:2023-05-26 13:34:31浏览次数:39  
标签:初始化 销毁 default bean Bean 探析 注解 Spring6

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

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

标签:初始化,销毁,default,bean,Bean,探析,注解,Spring6
From: https://www.cnblogs.com/acdongla/p/17434470.html

相关文章

  • Spring6 探析之@Configuration 注解
    Spring6探析之@Configuration注解介绍@Configuration注解大家都不陌生,该注解有以下特点必须在类上使用能够将被注解的类加载到IOC容器里能够将类中被@Bean注解标记的方法加载到IOC容器里@Configuration有一些参数,其中最值得关注的是proxyBeanMethods,该参数值默认为tr......
  • spring中的beanFactory和FactoryBean的区别?
    beanFactory是容器的根接口是一个工厂,负责管理bean,创建bean。FactoryBean是一个工厂bean,用来创建一类比较复杂的对象。比如mybatis里的sqlsessionFactory。二者的联系:FactoryBean的实现类会向容器中注入自身以及getObject方法返回的对象。二者联系的点在于AbstractBeanFac......
  • Java 实践(Netbeans开发)——StringTokenizer实现数组分割
     引:StringTokenizer存在于java.util. StringTokenizer包中,是一个用来分隔String的应用类,相当于VB的split函数。1.构造函数publicStringTokenizer(Stringstr)publicStringTokenizer(Stringstr,Stringdelim)publicStringTokenizer(Stringstr,Stringdelim,boolean......
  • Netbeans开发—JAVA 作业之求素数
        JAVA课上的一个作业:求比给定的数小的所有素数并打印出来    准备工作:    1)用Netbeans新建一个JavaApplication     2)创建文件目录(根据个人习惯创建文件目录),我的目录如下:        3)创建本工程的JAVA文件:Prime.java              ......
  • Netbeans开发—PersonalCrad(Version:2.0)
       上次的PersonalCard 里只是简单地用了几个控件,label、textfeild和button,这次,再来用几个常用的控件:    ComboBox、Radiobutton、Textarea。Ready?GO!       首先,用Netbeans新建一个JAVADesktopApplication:PersonalCard    然后,开始拖控件,参照下图:  ......
  • Spring Bean 生命周期常见错误
    案例1:构造器内抛空指针异常先看个例子。在构建宿舍管理系统时,有LightMgrService来管理LightService,从而控制宿舍灯的开启和关闭。我们希望在LightMgrService初始化时能够自动调用LightService的check方法来检查所有宿舍灯的电路是否正常,代码如下:(https://www.java567.c......
  • Spring Bean 依赖注入常见错误。
    案例1:@Value没有注入预期的值在装配对象成员属性时,我们常常会使用@Autowired来装配。但是,有时候我们也使用@Value进行装配。不过这两种注解使用风格不同,使用@Autowired一般都不会设置属性值,而@Value必须指定一个字符串值,因为其定义做了要求,定义代码如下: public@interfaceValu......
  • Spring Bean 依赖注入常见错误
    案例1:过多的赋予,无从选择在使用@Autowired时,无论您是初学者还是经验丰富的Spring用户,都可能遇到或者制造类似的错误:requiredasinglebean,but2werefound顾名思义,我们只需要一个Bean,但是实际上提供了两个(在实际错误中,这里的“2”可以是任何大于1的数字)。(https://www.ja......
  • day 105 - javaBean
    javaBean是一种实体类JavaBean有特定的写法必须有一个无参构造属性必须私有化必须有对应的get,set方法一般用来和数据库字段做映射:ORMORM:对象关系映射表-->类字段-->属性行记录-->对象实现创建数据库,创建对应实体类 //实体类,和数据库中的表结构......
  • Spring中Bean的生命周期
    在Spring中,最关键的就是Bean,spring通过IOC容器创建并管理Bean,一个普通的类是怎么样被Spring容器管理,并注册成为一个Bean呢,主要有如下几布1、实例化Bean,并且对bean的属性的配置进行依赖注入,在这一步中,会对类进行实例化,也就是得到一个类的对象,这一步调用的是类的无参构......