use*_*157 1 java spring lombok
我有一堂这样的课:
@Service("aSpringService")
@RequiredArgsConstructor(onConstructor = @__({@Autowired}))
public class ServiceImpl implements Service {
@NonNull
private final Member1 m1;
@NonNull
private final Member2 m2;
@NonNull
private final Member3 m3;
}
Run Code Online (Sandbox Code Playgroud)
构造函数将由 Lombok 创建,并且在运行时,spring 会将成员注入到构造函数中。现在我需要一个设置方法,但被 lombok 困住了。看来,Lombok 不能称为自写的东西。
我想要一个 Lombok-Annotation 的新参数,例如useDefaultConstructor
. 当此参数存在时,自动代码(来自 Lombok)将调用无参数构造函数,我可以自己编写该构造函数。
@RequiredArgsConstructor(onConstructor = @__({@Autowired}), useDefaultConstructor = true)
// Note the "useDefaultConstructor = true"
public class ServiceImpl implements Service {
@NonNull
private final Member1 m1;
private ServiceImpl() {
//some self-written setup-code
}
}
Run Code Online (Sandbox Code Playgroud)
生成的类:
public class ServiceImpl implements Service {
private final Member1 m1;
// This constructor is not generated by lombok
private ServiceImpl() {
//some self-written setup-code
}
// Constructor generated by lombok
@Autowired
public ServiceImpl(Member1 m1) {
this(); // <- only created when "useDefaultConstructor" is present
this.m1 = m1;
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法用 lombok 做到这一点?我懒得为自己编写构造函数(并且每次需要新的 spring 成员时都更改它)。
你尝试过Spring@PostConstruct
注解吗?
@PostConstruct
public void init() {
// setup-code
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1323 次 |
最近记录: |