Spring @Bean 和 @Lookup 方法

Spring @Bean with @Lookup method

我已经使用@Lookup 注释实现了一个Spring bean。 (这个帖子很有帮助:How to use spring @Lookup annotation?

我随后注意到一个奇怪的行为,我不确定这是设计使然还是我自己的误解。 Spring 将在使用 @Service、@Component 等注释的 ComponentScan-ed bean 中实现 @Lookup 方法,但不会在 @Configuration class 中定义的 @Bean 中实现此类方法(Application.java).

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

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

事实上,这种行为 @Lookup 注释的限制。 Spring documentation 的最新版本比 4.1 版更明确地描述了警告。

...please remember that lookup methods won't work on beans returned from @Bean methods in configuration classes;

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