2

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

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

我想错了吗?ApplicationContext如何使用此后期处理注册我需要的 bean ?

4

2 回答 2

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>

如果您仅使用注释配置应用程序上下文,请查看此答案以了解无需 XML 的方法。

于 2012-06-19T22:14:15.713 回答
0

如何让您的@Stub注释扩展@Component注释?像@Serviceor @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 "";

}}
于 2012-06-20T01:49:02.513 回答