В коде службы я хочу инициализировать его только в том случае, если компонент был создан в конфигурации.
В коде службы, где используется предыдущая служба, я видел, что я могу использовать Необязательно в конструкторе или @Autowired(required = false) для атрибута, а затем я сделаю if(myService != null), чтобы не выполнять код, если служба не существует.
Пример кода в конфигурации с комментарием, где я не знаю, что делать:
Код: Выделить всё
@Configuration
public class MyConfiguration {
// Empty value by default if not given
@Value("${property.value:}")
private String myProperty;
@Bean("myBean")
public MyBeanObject myBeanObject() {
if (StringUtils.isNotEmpty(this.myProperty)) {
return new MyBeanObject;
} else {
// How to do?
}
}
}
Код: Выделить всё
// How to make this service optional and not created if bean does not exist?
@Service("myFirstService")
public class MyFirstServiceImpl extends AbstractMyService {
@Autowired
public MyFirstServiceImpl(@Qualifier("myBean") MyBeanObject myBeanObject) {
super(myBeanObject);
}
}
Код: Выделить всё
@Service
public class MySecondServiceImpl {
private AbstractMyService myService;
@Autowired
public MySecondServiceImpl(@Qualifier("myFirstService") Optional myServiceOpt) {
if(myServiceOpt.isPresent()) {
this.myService = myServiceOpt.get();
}
}
public void method() {
if(this.myService != null) {
// treatment
}
}
}
Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/798 ... n-to-usage
Мобильная версия