Angenommen, ich habe die Klasse SomeClass
, die im Konstruktor Wert annimmt und das Feld füllt.Spring-Autowire-Objekt mit Wert
String text;
String sometext;
public someClass(String text, String sometext){
this.text = text;
this.sometext = sometext;
}
SomeClass
hat eine Methode, die ein neues Objekt erstellt. In Java, wenn wir ein neues Objekt anlegen können wir mit Werten wie
ClassName variable = new ClassName(text, sometext);
und füllen Sie die Felder in ClassName
wie dieser Konstruktor instanziiert
public ClassName(String text, String sometext){
this.text = text;
this.sometext = sometext;
}
Aber im Frühjahr autowired Verwendung, wie wir das tun können?
@Autowired
public ClassName(SomeClass someClass){
this.text = someClass.text;
this.sometext = someClass.sometext;
}
Dies wird nicht funktionieren. wie Frühling wissen, welche die Instanz von SomeClass
UPDATE:
Ich war falsch. Ich habe nicht auf DI-Art gedacht. anstelle von Autowiring SomeClass
. Ich musste ClassName
autowire.
Ohne DI habe ich ein neues Objekt in einer Methode der Klasse ClassName
Wenn DI mit i in der Methode der Klasse ClassName
@Autowired
ClassName className;
ich die Felder autowire hatte die Herstellung direkt bevölkern kann Felder öffentlich
className.text = text;
className.sometext = sometext;
und ich kann mit Javabeans tun. aber wie über Konstruktor zu tun.
HINWEIS: Mit der Federkonfiguration ist nichts falsch. Basisscan ist aktiviert.
Sie sagen also, ich kann keinen dynamischen Wert mit Autowiring über Konstruktor einfügen? – user2471976
@ user2471976 Ja, das geht einfach nicht. Spring muss zum Zeitpunkt der Bereitstellung alle Konstruktorargumentwerte kennen, da die Anwendung nur bereitgestellt wird, wenn alle Beans ordnungsgemäß erstellt wurden. Schauen Sie sich [http://stackoverflow.com/questions/6739566/anyway-to-autowire-a-bean-that-requires-constructor-arguments] und [dies] (http://stackoverflow.com) an/questions/34046451/spring-autowire-with-dynamic-Konstruktor-Parameter-Using-Annotation-Ansatz) post. Ihre beste Wette für diese Art von Situation ist ** Getter Setter Methoden ** wie ich in meiner Antwort erwähnt. –
Danke für die schnelle Antwort. – user2471976