Spring Prototype bean具有不同的参数

时间:2015-01-14 02:58:09

标签: java spring dependency-injection

我想将原型scoped bean注入单例。这个原型bean只应为它注入的每个Singleton创建一次(据我所知,默认情况下是这种情况)。但是,我确实希望每次都有一个稍微不同的bean,所以我希望能够使用在构造原型bean时使用的自定义注释来注释注入点。

问题是,如何找出注射点上的注释?

这里有一些代码可以看到我想要实现的目标:

@Component
public class X {
    @Inject
    @CustomAnnotation("Hi")
    private PrototypeBean bean;
}

PrototypeBean由bean方法提供:

@Bean
public PrototypeBean prototypeBean(CustomAnnotation customAnnotation) {
    return new PrototypeBean(customAnnotation);
}

这里的想法是,在注入PrototypeBean的任何地方,都会创建一个新实例,它根据CustomAnnotation的值略有不同。

我知道你可以使用ApplicationContext做到这一点(好吧,传递额外的参数,而不是注释),但是我想通过简单的注释来保持它的轻量化。

1 个答案:

答案 0 :(得分:0)

也许您需要的是自定义BeanPostProcessor。本博文中的“3.2数据访问”部分“A Spring Custom Annotation for a Better DAO”与您尝试的内容非常相似。