Spring Boot下的lombok安裝以及使用簡介

引言:Spring Boot是非常高效的開發框架,lombok是一套代碼模板解決方案,將極大提升開發的效率,這裏介紹給大家使用。

1. Lombok

  Lombok想要解決了的是在我們實體Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不會用到,但是某些時候仍然需要複寫,以期方便使用的方法;在使用Lombok之後,將由其來自動幫你實現代碼生成,注意,其是在運行過程中,幫你自動生成的。就是說,將極大減少你的代碼總量。

  Lombok的官方地址: https://projectlombok.org/

2. LomBok的安裝

   在SpringBoot1.4.1項目的pom.xml中新增如下信息:

[html] view plain copy
  1. <dependency>  
  2.              <groupId>org.projectlombok</groupId>  
  3.              <artifactId>lombok</artifactId>  
  4.          </dependency>  
 注意這裏無需指定版本,因爲Spring Boot中已經默認引入了這個類庫,且指定了其scope。 這個即將lombok引入了項目,可以引用其類庫標註。

  針對不同的IDE,lombok提供了不同的解決方案,筆者使用的是STS,故這介紹一下如何使用lombok插件在STS中:

  >> 1.  下載最新的lombok,最新版本。1.16.10  https://projectlombok.org/download.html

  >> 2.  切到lombok下載的目錄,運行命令: java -jar lombok.jar

   

   選中目錄之後,就會看到如下窗口:

    

     大家可以看到,這裏的會使用javaagent的方式寫入STS的啓動過程中。在確定之後,我們切到sts的安裝目錄,驗證一下STS.ini文件:

      

     大家也可以發現,在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方法以及日誌使用:

[html] view plain copy
  1. import lombok.Data;  
  2. import lombok.extern.slf4j.Slf4j;  
  3.   
  4. @Slf4j  
  5. @Data  
  6. public class TestBean {  
  7.     private String name;  
  8.     private int age;  
  9. }  

  測試用例:

[html] view plain copy
  1. import org.junit.Test;  
  2. import org.junit.runner.RunWith;  
  3. import org.springframework.beans.factory.annotation.Autowired;  
  4. import org.springframework.boot.test.context.SpringBootTest;  
  5. import org.springframework.test.context.junit4.SpringRunner;  
  6.   
  7. import lombok.extern.slf4j.Slf4j;  
  8.   
  9. @RunWith(SpringRunner.class)  
  10. @SpringBootTest  
  11. @Slf4j  
  12. public class TestEntityBean {  
  13.   
  14.     TestBean bean = new TestBean();  
  15.       
  16.     @Autowired  
  17.     private MyCase mycase;  
  18.       
  19.       
  20.     //@Test  
  21.     public void test() {  
  22.        bean.setAge(123);  
  23.        bean.setName("zhangsan");  
  24.          
  25.        log.info(bean.toString());  
  26.     }  
  27. }  
 用例運行結果 

[html] view plain copy
  1.   .   ____          _            __ _ _  
  2.  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \  
  3. ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \  
  4.  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )  
  5.   '  |____| .__|_| |_|_| |_\__, | / / / /  
  6.  =========|_|==============|___/=/_/_/_/  
  7.  :: Spring Boot ::        (v1.4.1.RELEASE)  
  8.   
  9. 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)  
  10. 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  
  11. 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  
  12. 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  
  13. 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>)  
  14. 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>)  
  15. 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)  
  16. 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)  
  17. 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]  
  18. 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]  
  19. 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]  
  20. 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)  
  21. 2016-10-24 11:49:22.676  INFO 700 --- [           main] org.cuckoo.report.brain.TestEntityBean   : TestBean(name=zhangsanage=123)  
  22. 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默認反射對象中的所有屬性,非常的好用。

原文:bladestone

原文地址:https://blog.csdn.net/blueheart20/article/details/52909775


發佈了25 篇原創文章 · 獲贊 22 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章