我有从配置值创建的同一类的实例,因此我需要从该配置值注入/自动装配它们。我在guice中这样做,例如:

for (String s : config.getStrings()) {
    bind(Foo.class).annotatedWith(Names.named(s)).toInstance(new Foo(s));
}


有什么方法可以在Spring中执行类似的操作,还是可以使用FactoryBean之类的方法来创建给定qualifier的类的实例?

最佳答案

public final class FLEXSyncFactory implements ApplicationContextAware {

    private static AbstractApplicationContext context;

    public void setApplicationContext(ApplicationContext applicationContext)
    throws BeansException {
        context = (AbstractApplicationContext) applicationContext;
    }


并注册bean的别名

DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) context.getBeanFactory();
Foo fooBean = beanFactory.getBean(Foo.class);
beanFactory.initializeBean(fooBean, "TheAliasForBeanNameYouNeed");
beanFactory.autowireBeanProperties(fooBean, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, true);

10-07 19:15
查看更多