Spring6 探析之@Configuration 注解

Spring6 探析之@Configuration 注解

介绍

@Configuration 注解大家都不陌生,该注解有以下特点

  • 必须在类上使用
  • 能够将被注解的类加载到IOC容器里
  • 能够将类中被@Bean注解标记的方法加载到IOC容器里

@Configuration 有一些参数,其中最值得关注的是proxyBeanMethods ,该参数值默认为true

  • 参数为true时,为单例模式,每次从IOC拿到的都是同一个对象
  • 参数为false时,为原子模式,每次拿到的是不同的对象

下面是 @Configuration 注解的源码:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
    
	@AliasFor(annotation = Component.class)
	String value() default "";

	boolean proxyBeanMethods() default true;

	boolean enforceUniqueMethods() default true;

}

其中,value 参数也是常用的一种,作用是为IOC中的实例指定 bean id

验证 proxyBeanMethods 参数

可以使用以下代码验证 proxyBeanMethods 参数,其中,代码中 Config.class 类为被@Configuration 标注的类,Person 为任意的bean对象

  • 当proxyBeanMethods=true 时,输出 true,代表从IOC中拿到了相同的实例
  • 当proxyBeanMethods=false时,输出false,代表从IOC中拿到了不同的实例

image-20230525220844723

image-20230525220635544

posted @ 2023-05-26 12:30  yangruomao  阅读(23)  评论(0编辑  收藏  举报