Я пытаюсь изучить Dagger2. Пока я занимался, у меня был вопрос.Dagger2: Field Injection, у которого также есть поле инжекции
Мой вопрос Короче говоря, я хочу сделать поле Инъекции, в котором также есть инъекция поля. Как сделать или использовать компонент?
Я объясню свой вопрос ниже моим кодом. ниже код работает нормально, но я хочу лучше? или красивый код.
Person.java < - этот класс имеет полевую инъекцию.
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);
}
Я опускаю Company.java CompanyModule.java, PersonModule.java.
Это простой пример. , но в более крупном проекте в нем будет очень сложно и много инъекций.
В этом случае метод Component.java и call inject(), такой как верхний код, действительно беспокоит и трудно кодирует. Есть ли хороший способ красивого кода?
Что именно вас беспокоит при введении образца? – Jacob
Что я хочу ... Я хочу удалить компонент. Инъект (человек), который находится в TestPerson.java –
Если я удалю компонент component.inject (person) в TestPerson.java, в person.company будет пустое значение. Есть ли хорошая идея? когда я ввожу значение человеку в TestPerson.java, поле инъекции человека (компания) вводится автоматически? –