懒加载导致@PostConstruct失效
这是我启动类
@SpringBootApplication
@ComponentScan(basePackages = "com.bryant",lazyInit = true)
public class StartServer {
public static void main(String[] args) {
SpringApplication.run(StartServer.class, args);
}
}
这是我的工具类
@Component
public class HelloUtil {
private String helloId = "hello-world";
@PostConstruct
private void init(){
initHelloId();
}
public String getHello(){
return helloId;
}
private void initHelloId(){
System.out.println("----------init start----------");
this.helloId = "hello-123456";
System.out.println("----------init finish----------");
}
}
请求一下接口看看输出结果
输出结果是hello-123456,不是hello-world
可以看到确实是执行了@PostConstruct注解的方法,但这是在我们用到的时候才进行初始化,并不是我们想要看到的结果
我们在工具类上加上注解@Lazy(false)再看下效果
@Component
@Lazy(false)
public class HelloUtil {
private String helloId = "hello-world";
@PostConstruct
private void init(){
initHelloId();
}
public String getHello(){
return helloId;
}
private void initHelloId(){
System.out.println("----------init start----------");
this.helloId = "hello-123456";
System.out.println("----------init finish----------");
}
}
项目启动
可以看到在项目启动前就完成了初始化