我有一个用@Configuration
注释的类(我们称之为StubConfiguration
),它有一个用@Bean
注释的方法。此方法返回BeanFactoryPostProcessor
实现,该实现负责注册一些bean。但是,Spring无法解析此工厂在运行时注册的bean。
我的假设是StubConfiguration
被Spring的组件扫描拾取,BeanFactoryPostProcessor
被注册,然后调用它的postProcessBeanFactory()
方法,随后注册我需要的bean。
我是否错误地想到了这个?如何使用此后处理在ApplicationContext
注册我需要的bean?
答案 0 :(得分:0)
如果您还使用XML应用程序上下文来声明bean,则可以告诉Spring执行组件扫描并将@Stub
视为Spring组件注释。
<context:component-scan base-package="your.base.package">
<context:include-filter type="annotation" expression="your.stub.package.Stub"/>
</context:component-scan>
如果您只使用注释配置应用上下文,请查看this answer以了解无需XML的方法。
答案 1 :(得分:0)
如何让@Stub
注释扩展@Component
注释?与@Service
或@Repository
一样。
您将使用常规的Spring上下文扫描扫描您的bean,您可以保留自定义注释,而不需要手动注册您的bean。
来自@Service
的示例:
{@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Service {
/**
* The value may indicate a suggestion for a logical component name,
* to be turned into a Spring bean in case of an autodetected component.
* @return the suggested component name, if any
*/
String value() default "";
}}