欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Spring Boot中lombok的安装与使用详解

程序员文章站 2024-02-28 15:09:10
前言 众所周知spring boot是非常高效的开发框架,lombok是一套代码模板解决方案,将极大提升开发的效率,这里介绍给大家使用。文中详细介绍了lombok的安装与...

前言

众所周知spring boot是非常高效的开发框架,lombok是一套代码模板解决方案,将极大提升开发的效率,这里介绍给大家使用。文中详细介绍了lombok的安装与使用教程,话不多说了,来一起看看详细的介绍吧。

1. lombok

lombok想要解决了的是在我们实体bean中大量的getter/setter方法,以及tostring, hashcode等可能不会用到,但是某些时候仍然需要复写,以期方便使用的方法;在使用lombok之后,将由其来自动帮你实现代码生成,注意,其是在运行过程中,帮你自动生成的。就是说,将极大减少你的代码总量。

lombok的官方地址:

2. lombok的安装

在springboot1.4.1项目的pom.xml中新增如下信息:

<dependency> 
    <groupid>org.projectlombok</groupid> 
    <artifactid>lombok</artifactid> 
</dependency> 

注意:这里无需指定版本,因为spring boot中已经默认引入了这个类库,且指定了其scope。 这个即将lombok引入了项目,可以引用其类库标注。

针对不同的ide,lombok提供了不同的解决方案,笔者使用的是sts,故这介绍一下如何使用lombok插件在sts中:
  >> 1.  下载最新的lombok,最新版本。1.16.10 

  >> 2.  切到lombok下载的目录,运行命令: java -jar lombok.jar

Spring Boot中lombok的安装与使用详解   

   选中目录之后,就会看到如下窗口:

Spring Boot中lombok的安装与使用详解   

大家可以看到,这里的会使用javaagent的方式写入sts的启动过程中。在确定之后,我们切到sts的安装目录,验证一下sts.ini文件:

Spring Boot中lombok的安装与使用详解      

大家也可以发现,在sts的目录下,也有lombok.jar文件的存在,整个安装过程即可完成。

3.   lombok的使用

主要是基于标注来进行信息的封装和使用:

       @nonnull:  标识对象是否为空,为空则抛出异常

       @getter:   自动生成getter方法

       @setter:  自动生成setter

        @tostring:  覆盖tostring方法

        @equalsandhashcode: 覆盖equal和hashcode方法

    @data:  @getter/@setter, @tostring, @equalandhashcode等组合

    @slf4j:  默认使用slf4j的日志对象

4. 使用示例:

示例getter/setter方法以及日志使用:

import lombok.data; 
import lombok.extern.slf4j.slf4j; 
 
@slf4j 
@data 
public class testbean { 
 private string name; 
 private int age; 
} 

测试用例:

import org.junit.test; 
import org.junit.runner.runwith; 
import org.springframework.beans.factory.annotation.autowired; 
import org.springframework.boot.test.context.springboottest; 
import org.springframework.test.context.junit4.springrunner; 
 
import lombok.extern.slf4j.slf4j; 
 
@runwith(springrunner.class) 
@springboottest 
@slf4j 
public class testentitybean { 
 
 testbean bean = new testbean(); 
  
 @autowired 
 private mycase mycase; 
  
  
 //@test 
 public void test() { 
  bean.setage(123); 
  bean.setname("zhangsan"); 
   
  log.info(bean.tostring()); 
 } 
} 

用例运行结果

 . ____   _   __ _ _ 
 /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ 
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ 
 \\/ ___)| |_)| | | | | || (_| | ) ) ) ) 
 ' |____| .__|_| |_|_| |_\__, | / / / / 
 =========|_|==============|___/=/_/_/_/ 
 :: spring boot ::  (v1.4.1.release) 
 
2016-10-24 11:49:19.521 info 700 --- [   main] org.cuckoo.report.brain.testentitybean : starting testentitybean on 08-201412015324 with pid 700 (started by junfengchen in d:\dev\workspace\jspdemo) 
2016-10-24 11:49:19.523 info 700 --- [   main] org.cuckoo.report.brain.testentitybean : no active profile set, falling back to default profiles: default 
2016-10-24 11:49:19.647 info 700 --- [   main] o.s.w.c.s.genericwebapplicationcontext : refreshing org.springframework.web.context.support.genericwebapplicationcontext@4f80542f: startup date [mon oct 24 11:49:19 cst 2016]; root of context hierarchy 
2016-10-24 11:49:22.191 info 700 --- [   main] s.w.s.m.m.a.requestmappinghandleradapter : looking for @controlleradvice: org.springframework.web.context.support.genericwebapplicationcontext@4f80542f: startup date [mon oct 24 11:49:19 cst 2016]; root of context hierarchy 
2016-10-24 11:49:22.290 info 700 --- [   main] s.w.s.m.m.a.requestmappinghandlermapping : mapped "{[/foo]}" onto public java.lang.string org.cuckoo.report.brain.welcomecontroller.foo(java.util.map<java.lang.string, java.lang.object>) 
2016-10-24 11:49:22.293 info 700 --- [   main] s.w.s.m.m.a.requestmappinghandlermapping : mapped "{[/],methods=[get]}" onto public java.lang.string org.cuckoo.report.brain.welcomecontroller.welcome(java.util.map<java.lang.string, java.lang.object>) 
2016-10-24 11:49:22.295 info 700 --- [   main] s.w.s.m.m.a.requestmappinghandlermapping : mapped "{[/error]}" onto public org.springframework.http.responseentity<java.util.map<java.lang.string, java.lang.object>> org.springframework.boot.autoconfigure.web.basicerrorcontroller.error(javax.servlet.http.httpservletrequest) 
2016-10-24 11:49:22.296 info 700 --- [   main] s.w.s.m.m.a.requestmappinghandlermapping : mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.modelandview org.springframework.boot.autoconfigure.web.basicerrorcontroller.errorhtml(javax.servlet.http.httpservletrequest,javax.servlet.http.httpservletresponse) 
2016-10-24 11:49:22.351 info 700 --- [   main] o.s.w.s.handler.simpleurlhandlermapping : mapped url path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.resourcehttprequesthandler] 
2016-10-24 11:49:22.351 info 700 --- [   main] o.s.w.s.handler.simpleurlhandlermapping : mapped url path [/**] onto handler of type [class org.springframework.web.servlet.resource.resourcehttprequesthandler] 
2016-10-24 11:49:22.409 info 700 --- [   main] o.s.w.s.handler.simpleurlhandlermapping : mapped url path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.resourcehttprequesthandler] 
2016-10-24 11:49:22.642 info 700 --- [   main] org.cuckoo.report.brain.testentitybean : started testentitybean in 3.868 seconds (jvm running for 4.854) 
2016-10-24 11:49:22.676 info 700 --- [   main] org.cuckoo.report.brain.testentitybean : testbean(name=zhangsan, age=123) 
2016-10-24 11:49:22.691 info 700 --- [  thread-2] o.s.w.c.s.genericwebapplicationcontext : closing org.springframework.web.context.support.genericwebapplicationcontext@4f80542f: startup date [mon oct 24 11:49:19 cst 2016]; root of context hierarchy 

大家可以注意到@slf4j替代掉了冗余的logger声明语句, @data不必在使用getter/setter方法,其中tostring默认反射对象中的所有属性,非常的好用。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。