Ist es möglich, @Autowired
zu einer Klasse hinzuzufügen und auch einen Konstruktor zu der Klasse hinzuzufügen, die diese auto- wired Klassen nicht verwendet?Wie man Dienste außerhalb des Konstruktors autowire?
Beispiel:
public class MyJob {
@Autowired
private MyService1 serv1;
@Autowired
private MyService2 serv2;
public MyJob(String filename) {
this.filename = filename;
}
}
Hier möchte ich MyService1
und MyService2
für selbstverständlich nehmen, und initialisieren nur jene Klasse @Bean
durch den Konstruktor:
@Bean
public getMyJob1() {
return new MyJob("test1");
}
@Bean
public getMyJob2() {
return new MyJob("test2");
}
Ist das möglich?
Beachten Sie, dass Sie effektiv eine einfache Java-Klasse mit Mitgliedern erstellen, die nur instanziiert werden können eine Reflexion (d.h. kann nicht ohne Spring leben), so dass es schwierig ist, es zu testen. Warum injizieren Sie die Dienste nicht über den Konstruktor? – kryger
Da, stell dir vor, ich möchte mehrere '@ Bean's Pb' MyJob' erstellen, und sie unterscheiden sich nur durch den Dateinamen. Dann müsste ich alle erforderlichen Dienste immer im Konstruktor hinzufügen, auch wenn sie immer gleich sind. – membersound
Ich würde einen Setter für die Eigenschaft 'filename' verwenden –