先声明: 本篇文章非常简单属于一分钟学会使用系列,不深入讲解原理,如果要学习源码,可以看小编Spring源码解析系列
什么是懒加载?懒加载就是不使用不加载,使用的时候才去加载! Spring默认不是懒加载,而是启动加载,就在Spring上下文启动时候就去加载,这样有一个坏处是导致启动时间过长。好处就是当第一次访问Bean时候速度相对快一丢丢。因为项目启动Bean就加载好了,而不是调用时候才加载。(效果不明显,一般使用默认)
Spring中有两种配置方法,你更喜欢哪种呢?
两种配置方法
一.xml配置文件 Bean标签的lazy属性
>
>
>
二.是@lazy注解@Target({ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Lazy {
/**
* 默认为懒加载
*/
boolean value() default true;
}@Configuration
public class BeanConfig {
//配置为非懒加载
@Lazy(value = false)
@Bean(name = {"hw","helloWorld"},autowire = Autowire.BY_NAME,initMethod = "initMethod",destroyMethod = "destroy")
public HelloWorld helloWorld(){
return new HelloWorld("@Bean注解创建");
}
}
验证
验证下是否是在Spring上下文启动时候就去加载。
我们预测lazy = false 或者是默认的情况下会在上下文加载时候就执行初始化方法。/**
* 什么是懒加载?
* 懒加载不使用不加载,使用的时候才去加载!
* 两种配置方法
* xml配置文件中bean标签的lazy属性
* @Lazy注解
* @param args
*/
public static void main(String[] args) {
new ClassPathXmlApplicationContext("classpath:spring-lazy.xml");
// 控制台打印
//init-method:这是一个nolazy的bean
//init-method:这是一个未决的的bean
}