您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Spring Java配置中调用@Bean带注释的方法

在Spring Java配置中调用@Bean带注释的方法

是的,Spring做些魔术。查看Spring Docs:

这就是神奇的地方:所有@Configuration类在启动时都使用cglib进行了子类化。在子类中,子方法调用方法并创建新实例之前,首先检查容器中是否有任何缓存(作用域)的bean。

这意味着@Bean通过cglib代理对方法调用,因此将返回Bean的缓存版本(不创建新的)。

@Beans认范围是SINGLETON,如果你指定其他范围,例如PROTOTYPE调用将传递给原始方法

请注意,这对于静态方法无效。根据spring文件

由于技术限制,对静态@Bean方法调用永远不会被容器拦截,即使在@Configuration类内也不会(如本节前面所述),因为技术限制:cglib子类只能覆盖非静态方法。结果,直接调用一个@Bean方法具有标准的Java语义,从而导致直接从工厂方法本身返回一个独立的实例。

java 2022/1/1 18:24:57 有488人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶