我是以错误的方式使用它,还是@Required无效?
这里我使用@Required注释了bean Non setter,但app正常启动并打印“null”。
我希望应用报告错误而无法正常启动。
@SpringBootApplication
public class ReqNotWorking {
public static void main(String[] args) {
SpringApplication.run(ReqNotWorking.class, args);
}
class Non{
private String req;
public String getReq() {
return req;
}
@Required
public void setReq(String req) {
this.req = req;
}
}
@Bean
public Non non(){
Non non = new Non();
//non.setReq("error");
return non;
}
@Bean
public CommandLineRunner commandLineRunner(Non non){
return args -> {
System.out.println(non.getReq());
};
}
}
答案 0 :(得分:0)
您通过Non
关键字实例化了new
类,因此Spring无法专门应用其后处理器(RequiredAnnotationBeanPostProcessor
)并验证其值字段。
作为旁注,@Required
注释可能在Java配置的Spring应用程序中没有意义,除非另有说明,否则所有bean都是隐式需要的。
你没有描述" req
"字符串应该来自,但如果它在启动时可用,您可以利用@Value
机制:
@Component
static class Non {
@Value("${req.value}")
private String req;
public String getReq() {
return req;
}
}