这是Lombok的实验性质的语法,以后可能会deprecate掉。
@Setter都知道就是lombok帮你生成setter方法,那里面的onMethod是什么意思呢?就是让lombok在生成setter方法时,在这个setter方法上进行annotate,annotation就是@Inject
@Setter(onMethod = @__(@Inject))
private String name;
就会变成:
@Inject
public void setName(String name) {
this.name = name;
}
再进一步,如果是这样呢?
@Setter(onMethod = @__(@Inject), onParam = @__(@Named("ZhcName"))
就变成了这样:
@Inject
public void setName(@Named("ZhcName") String name) {
this.name = name;
}
好了,就是这么简单。
关于为什么需要@Named,是因为你可能需要实例化好几个相同类型的object,这样容器可能不知道到底是哪个,所以不能单单依靠type能决定,所以需要起一个名字来唯一决定是哪个object。
Ref: https://projectlombok.org/features/experimental/onX
https://stackoverflow.com/questions/38058913/what-does-the-syntax-mean-in-lombok
原文:http://blog.csdn.net/hongchangfirst/article/details/103932893
作者:hongchangfirst
hongchangfirst的主页:http://blog.csdn.net/hongchangfirst