Im Code für den Dienst möchte ich ihn nur initialisieren, wenn die Bean in der Konfiguration erstellt wurde.
Im Code, in einem Dienst, in dem der vorherige Dienst verwendet wird, habe ich gesehen, dass ich Optional im Konstruktor oder @Autowired(required = false) für das Attribut verwenden kann und dann werde ich if(myService != null) tun, um den Code nicht auszuführen, wenn der Dienst dies nicht tut existieren.
Ein Beispiel des Codes in der Konfiguration mit einem Kommentar, bei dem ich nicht weiß, was ich tun soll:
Code: Select all
@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?
}
}
}
Code: Select all
// 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);
}
}
Code: Select all
@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
}
}
}
Vielen Dank.
Mobile version