Предположим, что существует управляемый компонент Spring, подобный этому:
@Component
@Profile("prod")
public class MyBean {
@Value("${x.y.id:-1}")
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
Кроме того, свойство x.y.id
существует в файле application-prod.properties
.
Теперь, если я хочу используйте тот же класс для создания другого управляемого компонента с другим профилем в классе конфигурации, подобном следующему:
@Profile("dev")
@Bean
public MyBean myBean() {
MyBean myBean = new MyBean();
myBean.setId(10);
return myBean;
}
он не работает, так как поле id
заканчивается значением -1
, потому что значение по умолчанию заполнителя имеет последнее слово.
Вопрос Возможно ли иметь второй управляемый компонент в такой ситуации?
Добавление x.y.id=10
в application-dev.properties работает для описанного выше случая, но не для этого:
@Profile("dev")
@Bean
public MyBean myBean() {
MyBean myBean = new MyBean();
myBean.setId(10);
return myBean;
}
@Profile("dev")
@Bean
public MyBean myAnotherBean() {
MyBean myBean = new MyBean();
myBean.setId(20);
return myBean;
}