Spring多个实现相同的接口

Gok*_*ner 6 java spring

我有一个接口和多个实现类,大约10个,这个接口.

prefix + name + suffix在运行时有这样的命名约定,我可以添加 @Autowired private Map<String, MyInterface> myImplementations; 然后使用myImplementations.get()方法访问实现类.

有没有更好的方法来访问这些实现?我只知道哪个impl.我需要在运行时,更改取决于我收到的消息.

Mik*_*ail 3

您可以在类中实现BeanFactoryAware接口,然后使用注入的 bean 工厂来获取所需的实现:

Interface impl = beanFactory.getBean("interfaceimpl");
Run Code Online (Sandbox Code Playgroud)

或者

Interface impl = beanFactory.getBean(InterfaceImpl.class);
Run Code Online (Sandbox Code Playgroud)