关于懒加载导致@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----------"); } }
项目启动 可以看到在项目启动前就完成了初始化
上一篇:
通过多线程提高代码的执行效率例子