具有默认构造函数的Lombok

时间:2018-06-05 08:22:34

标签: 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;

}

构造函数将由Lombok创建,在运行时,sp​​ring会将成员注入构造函数。 现在我需要一个设置方法,并坚持使用lombok。看来,龙目岛不能称之为自编的东西。

我想要什么

我想要一个像useDefaultConstructor这样的Lombok-Annotation的新参数。当这个参数出现时,自动代码(来自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
    }
}

生成的类:

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;
    }
}

问题

有没有办法用lombok做到这一点? 我懒得为自己编写构造函数(并且每当需要一个新的spring-member时更改它)。

1 个答案:

答案 0 :(得分:3)

您是否尝试过Spring @PostConstruct注释?

@PostConstruct
public void init() {
    // setup-code
}

这是Spring beans lifecycle management的一部分。