@builder,@NoArgsConstructor,@AllArgsConstructor,@Getter,@Setter注解—lombok注解遇到的问题

在开发过程中,lombok的使用极大的简化了实体类的开发工作。在通常情况下我们需要手动去建立getter和setter方法,构造函数之类的,而lombok的作用就是能够在我们编译源码的时候自动帮我们生成这些方法,这些都是通过注解的方式:如@builder,@NoArgsConstructor,@AllArgsConstructor,@Getter,@Setter,@data等等。

a.添加lombok的pom依赖:

<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>0.10.2</version>
</dependency>

在idea编译器,可以在下载对应版本的lombok插件,这样项目中就可以对于实体类进行简化开发了。

b.@builder注解使用的问题:

@Builder声明实体,表示可以进行Builder方式初始化,@Value注解,表示只公开getter,对所有属性的setter都封闭,即private修饰,所以它不能和@Builder在一起用

(在我看来,就是相当于将对象的set方法简化,在业务需求开发中,如果set的情况较多就可以使用,这样可以提高代码简洁度,下面是我使用@builder的方法)

在实体类中加上@Builder注解,在service层即可使用:

//实质上,就是对象的setId(),setName()
Object object =object.builder().Id("123”).name(“张三”).build();

但是在使用JPA的findone方法的时候,报错:没有默认的构造器,我推测是因为在加上@builder使JPA的默认构造器失效了,因此查阅了资料发现lombok中存在两个关于默认构造器的注解:@NoArgsConstructor(自动生成无参数构造函数),@AllArgsConstructor(自动生成全参数构造函数),于是尝试着在实体类上加了这两个注解,果然在使用JPA时就不会报错了,所以建议在没有遇到set方法使用过于繁多的情况下就不要用这个@builder了,可能是与对象关系映射的持久层框架有冲突。

c.总结:lombok极大的提高了我们的开发效率,java语言日新月异,难免遇到各类问题,还是活到老,学到老为妙!

lombok也存在其他的很实用的注解,比如@Data: 自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,为非final字段添加@Setter,和@RequiredArgsConstructor,技术很菜,希望可以多多学习!

转载于:https://www.cnblogs.com/adolph2715/p/11203031.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值