У меня есть ситуация, когда я использую одну возможную реализацию для конкретного компонента, и это выглядит так:
@Configuration
public class MyConfig {
@Autowired
private ApplicationContext context;
@Bean
public SomeInterface someInterface() {
if (this.context.getEnvironment().getProperty("implementation") != null) {
return new ImplementationOne();
} else {
return new ImplementationTwo();
}
}
}
До сих пор это работало замечательно, пока не появилось новое требование для использованиядополнительный интерфейс, который на данный момент обеспечивает реализацию только ImplementationTwo
, и не имеет смысла использовать его с ImplementationOne
:
@Bean
public SomeOtherInterface someOtherInterface() {
return new ImplementationTwo();
}
Я думаю, это будет работать, но мне интересно,это действительно имеет смысл, потому что в одном сценарии у меня могут быть оба компонента, в основном, создающие один и тот же объект.Имеет ли это смысл ?Может быть, есть лучший способ добиться того же?