Spring: Optionale Bean von der Erstellung bis zur VerwendungJava

Java-Forum
Anonymous
 Spring: Optionale Bean von der Erstellung bis zur Verwendung

Post by Anonymous »

In der application.yml können einige Eigenschaften angegeben werden oder nicht (je nach Umgebung kann die Behandlung am Ende durchgeführt werden oder nicht). Wenn nicht angegeben, darf die mit diesen Eigenschaften in einer Konfiguration initialisierte Bean nicht initialisiert werden. Ich habe gesehen, dass es nicht empfohlen wird, null zurückzugeben.
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?
}
}
}
Ein Beispiel für den ersten Dienst mit einem Kommentar, bei dem ich nicht weiß, wie ich es machen soll:

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);
}
}
Ein Beispiel für den zweiten Dienst, bei dem ich die Behandlung nur durchführe, wenn der Dienst existiert (ich weiß nicht, ob er korrekt ist):

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
}
}
}
Können Sie mir bitte helfen?
Vielen Dank.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post