lombok and guice injection
14,695
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 are 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 documentation.
Author by
Jin
Updated on August 10, 2022Comments
-
Jin over 1 year
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!
-
Tavian Barnes about 7 years"Please note, that this won't work in Guice anyway, as it requires a constructor that is not private" This is only true if the constructor doesn't have the
@Inject
annotation. With the annotation, Guice will handle it fine, except AOP won't work.