Wie man eine Bohne in ein Mitglied eines Mitglieds einspritztJava

Java-Forum
Anonymous
 Wie man eine Bohne in ein Mitglied eines Mitglieds einspritzt

Post by Anonymous »

Angenommen, es gibt einige komplizierte Objekte im Frühjahr, die automatisch Bohnen injiziert werden: < /p>

Code: Select all

@Bean()
private class SpringManagedObject {
Object someSpecificSpringBean1;
Object someSpecificSpringBean2;
Object someSpecificSpringBean3;
SpringManagedObjectLevel2 springManagedObjectLevel2;

public SpringManagedObject(final Object someSpecificSpringBean1, final Object someSpecificSpringBean2, final Object someSpecificSpringBean3, final SpringManagedObjectLevel2 springManagedObjectLevel2) {
this.someSpecificSpringBean1 = someSpecificSpringBean1;
this.someSpecificSpringBean2 = someSpecificSpringBean2;
this.someSpecificSpringBean3 = someSpecificSpringBean3;
this.springManagedObjectLevel2 = springManagedObjectLevel2;
}

public void defaultInitLogic() {
}
}

@Bean()
private class SpringManagedObjectLevel2 {
Object someSpecificSpringBean1;
Object someSpecificSpringBean2;
Object someSpecificSpringBean3;
Level3Bean theBeanIWantToInject;

public SpringManagedObjectLevel2(final Object someSpecificSpringBean1, final Object someSpecificSpringBean2, final Object someSpecificSpringBean3, final Level3Bean theBeanIWantToInject) {
this.someSpecificSpringBean1 = someSpecificSpringBean1;
this.someSpecificSpringBean2 = someSpecificSpringBean2;
this.someSpecificSpringBean3 = someSpecificSpringBean3;
this.theBeanIWantToInject = theBeanIWantToInject;
}
}

@Bean()
@ConditionalOnMissingBean
public Level3Bean TheMemberIWantInDevelopment() {
return new Level3Bean();
}
Ich möchte meine benutzerdefinierte Stufe 3Bean innen injizieren. Was ist einfach, wenn Sie nur eine Bohne haben: < /p>

Code: Select all

@Bean()
public SpringManagedObject TheObjectIWant(SpringManagedObject springManagedObject) {
springManagedObject.defaultInitLogic();
return springManagedObject;
}

@Bean()
public Level3Bean TheMemberIWantToInject() {
var result = new Level3Bean();
result.useConfiguration("1122");
return result;
}
< /code>
Aber die Situation ändert sich, wenn Sie mehrere Bohnen wie SO haben: < /p>
@Bean("vm1")
public SpringManagedObject TheObjectIWantInVm1(@Qualifier("vm1Member") SpringManagedObject springManagedObject) {
springManagedObject.defaultInitLogic();
return springManagedObject;
}

@Bean("vm2")
public SpringManagedObject TheObjectIWantInVm2(@Qualifier("vm2Member") SpringManagedObject springManagedObject) {
springManagedObject.defaultInitLogic();
return springManagedObject;
}

@Bean(name = "vm1Member")
public Level3Bean TheMemberIWantInVm1() {
var result = new Level3Bean();
result.useConfiguration("1122");
return result;
}

@Bean(name = "vm2Member")
public Level3Bean TheMemberIWantInVm2() {
var result = new Level3Bean();
result.useConfiguration("0011");
return result;
}
Natürlich verwende ich den @Qualifier falsch. Offensichtlich kann ich den Konstruktor für jedes der 2 SpringManagedObjects aufrufen, aber das würde implizieren, dass eine Menge Kesselplattencode.

Code: Select all

prodMember
und devMember ) ohne jeden der 2 Konstruktoren (Konstruktoren aufzurufen (

Code: Select all

SpringManagedObject
und SpringManagedObjectLevel2 ), diese Dateien sind ebenfalls readonly, da sie federspezifisch sind.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post