Spring-IOC高级特性
懒(延迟)加载(Lazy-Init)
ApplicationContext 容器的默认行为是在启动服务器时将所有 singleton bean 提前进行实例化。
这样如果项目比较大,Spring管理的类比较多,会造成每次启动项目耗时比较长的问题,这里我们就需要延迟加载特性;
延迟加载:指程序启动时不会默认实例化类,只有在被管理的bean使用的时候才会实例化;
使用场景
- 开启延迟加载一定程度提高容器启动和运转性能
- 对于不常使用的 Bean 设置延迟加载,这样偶尔使用的时候再加载,不必要从一开始该 Bean 就占用资源。
启用延迟加载
XML方式:
- 全局配置:
这样配置后,所有Bean都开启延迟加载特性<beans default-lazy-init="true"> <!-- no beans will be eagerly pre-instantiated... --> </beans>
- 指定Bean配置
<bean id="testBean" calss="com.wjy.LazyBean" lazy-init="true" />
注解方式:
- 全局配置:
在Spring配置类上添加// 指定类为配置类 @Configuration // 指定扫描包 @ComponentScan({ "com.wjy"}) // 引入外部资源文件 @PropertySource({ "classpath:jdbc.properties"}) // 指定全局懒加载实例化Bean @Lazy public class SpringConfig { }
@Lazy
注解,即可开启全局懒加载 - 指定类配置:
@Component("transactionManager") @Lazy public class TransactionManager