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
是典型行为的例外。
我已经使用@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
是典型行为的例外。