java懒加载注解_一分钟学习Spring注解之懒加载@Lazy

df086f34f670b38c0b74c06dfcbb3d95.png

先声明: 本篇文章非常简单属于一分钟学会使用系列,不深入讲解原理,如果要学习源码,可以看小编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

}

d78db3df456a1c49b475abb6c22e644e.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis懒加载是指在查询关联对象时,只有在真正使用到这些对象时才会进行加载,而不是在查询主对象时就一次性加载所有关联对象。这样可以减少不必要的数据库查询,提高查询效率。 在MyBatis中,可以通过配置来实现懒加载。一种常用的方式是使用MyBatis的association和collection标签来配置关联对象的懒加载。association用于一对一关系的懒加载,而collection用于一对多关系的懒加载。 例如,假设有一个User对象关联一个Order对象列表,可以通过如下配置来实现懒加载: ```xml <resultMap id="userResultMap" type="User"> <id property="id" column="id" /> <result property="name" column="name" /> <collection property="orders" ofType="Order" select="selectOrdersByUserId" fetchType="lazy" /> </resultMap> ``` 上述配置中,fetchType="lazy"表示orders列表的加载方式为懒加载。当查询User对象时,只有在访问orders列表时才会执行selectOrdersByUserId查询语句,实现懒加载。 需要注意的是,懒加载需要确保在Session关闭之前访问关联对象,否则会抛出异常。可以使用Session的selectList方法来解决该问题,如: ```java List<User> users = session.selectList("selectUsers"); for (User user : users) { List<Order> orders = user.getOrders(); // 访问关联对象,触发懒加载 // ... } ``` 通过配置和正确使用Session,可以实现MyBatis的懒加载功能,提高查询性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值