Ich versuche, Dolch2 zu lernen. Während ich praktizierte, hatte ich eine Frage.Dolch2: Feld Injektion, die auch Injektionsfeld hat
Meine Frage ist Kurz gesagt, ich möchte Feld Injection machen, die auch Feldeinspritzung hat. Wie wird eine Komponente hergestellt oder verwendet?
Ich werde meine Frage unten mit meinem Code erklären. unter Code funktioniert gut, aber ich will besser? oder schöner Code.
Person.java < - diese Klasse hat Feldinjektion.
public class Person {
public String name;
public int age;
@Inject
public Company involvedCompany; // Look here!! has field Injection.
public Person(String name, int age){
this.name = name;
this.age = age;
}
@Override
public String toString(){
return "[User] name : " + name + ", age : " + age + ", Company : " + involvedCompany.toString();
}
}
TestPerson.java
public class TestPerson {
@Inject
Person person; //I want to do field injection to this field.
//this filed also contains field injection in it.
//(See previos code Person.java)
TestPersonComponent component;
private TestPerson(){
component = DaggerTestPersonComponent.builder()
.companyModule(new CompanyModule("Tmax", "Korea"))
.personModule(new PersonModule("Ui-Gyun", 28))
.build();
/****************************************************
HERE!!! I am wondering How to change under code!!
*****************************************************/
component.inject(this); // for this class.
component.inject(person); // for person's inside field.
}
public void call(){
System.out.println(person.toString());
}
public static void main(String[] args){
TestPerson test = new TestPerson();
test.call();
}
}
TestPersonComponent.java
@Component(modules={CompanyModule.class, PersonModule.class})
public interface TestPersonComponent {
void inject(TestPerson test);
void inject(Person person);
}
Ich lasse Company.java CompanyModule.java, PersonModule.java.
Dies ist ein einfaches Beispiel. aber im größeren Projekt wird es sehr komplex und viele Injektionen darin geben.
In diesem Fall macht Component.java und Call inject() -Methode wie oberen Code wirklich Mühe und schwer zu programmieren. Gibt es eine gute Möglichkeit, schön zu kodieren?
Was genau beschäftigt Sie mit Ihrer Probeninjektion? – Jacob
Was ich will, ist ... Ich möchte component.inject (Person) löschen, die in TestPerson.java ist –
Wenn ich component.inject (person) in TestPerson.java löschen, gäbe es null Wert in person.company. Gibt es eine gute Idee? Wenn ich Wert auf eine Person bei TestPerson.java injiziere, wird das Injektionsfeld (Firma) der Person automatisch injiziert? –