问题
I'm new to lombok and guice injection, I could get the general concept but I ran into some code which I don't understand and can't search due to the syntax. Following is the code, can someone help me understand this?
import com.google.inject.Inject;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
@AllArgsConstructor(access = AccessLevel.PRIVATE, onConstructor = @__({ @Inject }))
public class SomeClass {
...
}
Thanks!
回答1:
This is going to add a constructor with all fields as parameters, with @Inject
annotation and private
modifier, so your code will be expanded to:
import com.google.inject.Inject;
public class SomeClass {
@Inject
private SomeClass() {
}
}
This is assuming there is no fields in the class. If you have some fields, then they will be added to the constructor, for example
import com.google.inject.Inject;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
@AllArgsConstructor(access = AccessLevel.PRIVATE, onConstructor = @__({ @Inject }))
public class SomeClass {
private String name;
}
Will become
import com.google.inject.Inject;
public class SomeClass {
private String name
@Inject
private SomeClass(String name) {
this.name = name;
}
}
Please note, that this won't work in Guice anyway, as it requires a constructor that is not private, per this documenation: https://github.com/google/guice/wiki/InjectionPoints.
Hope it helps!
来源:https://stackoverflow.com/questions/42910148/lombok-and-guice-injection