通过注解实现懒加载功能
代码总结
懒加载:xml形式、注解形式
66666666666666666666666666666666666
xml VS annotation
xml形式和注解形式
xml中的<beans default-lazy-init ="true">表示为这个配置文件中的所有bean开启懒加载,对应的注解形式是相当于在@configuration下面添加@Lazy
Xml与注解的Bean懒加载对比:
@Lazy表示开启bean的懒加载
lazy可以加在Bean类上,如:
@Component("19060bean1") @Lazy//开启bean懒加载 public class Bean1 { }
2.也可以加在配置类上
@Configuration @ComponentScan("com.imooc.coursescore1108.video19060") @Lazy//表示该配置类中所有的@Bean注解都要懒加载 public class MyConfig { }
xml和annotation的懒加载对比,在xml中如果在beans中添加default-lazy-init=true时,所有bean都是懒加载,相当于在注解形式中的@Configuration中配置@Lazy
通过注解开启Bean的懒加载
懒加载:创建spring上下文时,并不会实例化Bean,而是在获取Bean时,才去实例化Bean。
步骤1:创建配置扫描文件,并添加注解@Configuration,@ComponentScan(“路径”),这种在@Component下添加注解@Lazy,也可以不添加扫描注解,可以提供一个返回Bean实例的方法,并在方法上添加@Bean注解,通过这种实现懒加载,则在@Bean下添加注解@Lazy。
@Configuration
@ComponentScan("springlazy")
public class Configuration1 {
@Bean(name="bean2")
@Lazy
public Bean1 bean(){
return new Bean1();
}
}
步骤2:Bean类代码。
@Component(value="bean1")
@Lazy
public class Bean1 {
public Bean1(){
System.out.println("Bean1被创建了");
}
}
xml在<beans>标签里添加default-lazy-init通过注解实现。
@Configuration注解下添加@Lazy注解:该容器中所有作用域为singleton的Bean对象都会被懒加载。
代码:
@Configuration
@ComponentScan("springlazy")
@Lazy
public class Configuration1 {
@Bean(name="bean2")
public Bean1 bean(){
return new Bean1();
}
}
xml和注解形式开启懒加载:
通过注解方式开启懒加载:
懒加载的实现方式
@Lazy 开启Bean的懒加载