小编典典

使用@Lookup方法的Spring @Bean

java

我注意到一种奇怪的行为,我不确定这是设计使然还是我自己的误解。Spring将在以ComponentScan标记的@ Service,@
Component等注释的Bean中实现@Lookup方法,但不会在@Configuration类(Application.java)中定义的@Bean中实现这种方法。

这不是什么大问题,因为我可以从配置中删除@Bean定义,而直接对其类进行注释。但我想知道此行为是否记录在某处,还是我实施不正确?

@Bean
public Service getService() {
    // ServiceImpl has a @Lookup method,
    // but Spring does not implement it unless the class itself is annotated.
    return new ServiceImpl();
}

阅读 311

收藏
2020-11-26

共1个答案

小编典典

实际上,此行为 @Lookup注释的限制。Spring 文档的最新版本比4.1版本更清楚地描述了警告。

…请记住,查找方法不适用于从@Bean配置类中的方法返回的bean ;

通常,从@Bean方法返回的对象 确实 要处理其注释。@Lookup是典型行为的例外。

2020-11-26