spring 注解Configuration 中属性 proxy

2023-12-20  本文已影响0人  yincb

在Spring的@Configuration注解中,proxyBeanMethods属性用于控制是否启用基于CGLIB的代理机制来创建@Bean方法返回的对象。

默认情况下,proxyBeanMethods属性的值为true,即启用代理机制。这意味着Spring会为@Configuration注解标记的类创建一个代理对象,并拦截@Bean方法的调用,以确保每次调用都返回同一个实例。这种代理机制可以保证@Bean方法的调用是被拦截的,从而可以应用Spring的其他特性,例如AOP切面、事务管理等。

proxyBeanMethods属性的值为false时,Spring将不会为@Configuration注解标记的类创建代理对象。这意味着每次调用@Bean方法都会实际执行该方法,并返回一个新的实例。这种情况下,@Bean方法的调用将不会被拦截,也不会应用其他的Spring特性。

使用proxyBeanMethods属性可以灵活地控制@Configuration类中@Bean方法的代理行为。如果您的@Bean方法没有副作用,且不需要拦截和其他Spring特性的应用,可以将proxyBeanMethods属性设置为false,以避免代理的开销。

以下是一个示例:

@Configuration(proxyBeanMethods = false)
public class MyConfiguration {

    @Bean
    public MyBean myBean() {
        return new MyBean();
    }

    // 其他 @Bean 方法...
}

在上述示例中,MyConfiguration类的@Bean方法将直接返回一个新的MyBean实例,而不会被代理拦截。这样可以确保每次调用myBean()方法都会返回一个新的实例。

需要注意的是,proxyBeanMethods属性只在@Configuration注解上生效,对于其他的注解(例如@Component@Service等)不起作用。

上一篇下一篇

猜你喜欢

热点阅读