从Configuration-annotated类注册bean

时间:2012-06-19 21:50:31

标签: java spring javabeans spring-annotations

我有一个用@Configuration注释的类(我们称之为StubConfiguration),它有一个用@Bean注释的方法。此方法返回BeanFactoryPostProcessor实现,该实现负责注册一些bean。但是,Spring无法解析此工厂在运行时注册的bean。

我的假设是StubConfiguration被Spring的组件扫描拾取,BeanFactoryPostProcessor被注册,然后调用它的postProcessBeanFactory()方法,随后注册我需要的bean。

我是否错误地想到了这个?如何使用此后处理在ApplicationContext注册我需要的bean?

2 个答案:

答案 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 "";

}}