我有一个接口和多个实现类,大约10个,这个接口。
我有一个像prefix + name + suffix
这样的命名约定,所以在运行时,我可以添加
@Autowired
private Map<String, MyInterface> myImplementations;
然后使用myImplementations.get()
方法访问实现类。
有没有更好的方法来访问这些实现?我只知道哪个impl。我需要在运行时,更改取决于我收到的消息。
答案 0 :(得分:3)
您可以在类中实现BeanFactoryAware接口,然后使用注入的bean工厂来获得所需的实现:
Interface impl = beanFactory.getBean("interfaceimpl");
或
Interface impl = beanFactory.getBean(InterfaceImpl.class);