1.lombok的引入
2.@Slf4j注解:简化日志代码
3.@Getter, @Setter, @Data 注解:简化实体类代码
4.lombok的其他注解
lombok是spring提供的一个组件,并不是springboot特有的,里面提供了很多注解,可以简化我们的代码.
我们今天主要演示lombok简化日志代码的@Slf4j注解,和简化实体的set/get方法的@Data注解
我们在springboot项目中演示
1.添加依赖
org.projectlombok lombok
2.idea使用lombok需要安装lombok插件,否则无法使用lombok的注解
安装链接:https://www.cnblogs.com/sxdcgaq8080/p/7884477.html
此链接里还介绍了一些lombok中的注解的使用,可以了解一下。
上一篇文章里,讲的使用AOP统一处理web请求日志的代码中,引用了log4j依赖,每一个类中如果需要单独打印日志,还需要获取Logger对象才可以打印日志:
private static final Logger logger = LoggerFactory.getLogger(XXXXXX.class);
每一个类中都需要添加这么一行代码才可以添加日志,这样也太复杂了,于是lombok提供了@Slf4j注解,可以直接使用logger对象,而不用再获取此对象了,简化了代码。
1.创建一个LombokController类
package com.itmayiedu.controller; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @Slf4j public class LombokController { @RequestMapping("/printLog") public String printLog(String name,Integer age) { log.info("打印日志:name = " + name + ",age = " + age); return "我的第一个springboot项目"; } }
2.浏览器访问
3.控制台打印日志
1.我们平时写一个实体类,定义属性之后,还要写对应的get/set方法
创建一个entity包下的UserEntity实体类
package com.itmayiedu.entity; public class UserEntity { // 定义属性 private String name; private Integer age; // get/set方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
2.在LombokController类中新增一个getUser方法,里面调用了实体类的get/set方法
package com.itmayiedu.controller; import com.itmayiedu.entity.UserEntity; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @Slf4j public class LombokController { @RequestMapping("/getUser") public String getUser(String name,Integer age) { UserEntity userEntity = new UserEntity(); userEntity.setName(name); userEntity.setAge(age); log.info("打印日志:" + userEntity.toString()); return "SUCCESS"; } }
3.这种是我们常用的实体类,需要定义get/set方法,lombok提供了@Getter,@Setter注解,这样就可以替代掉代码中的get/set方法,LombokController类中依然可以调用实体类的get/set方法。
注:我们编译之后的class文件,依然是get/set方法,注解只是简化我们的代码,底层实际上没有改变。
package com.itmayiedu.entity; import lombok.Getter; import lombok.Setter; public class UserEntity { // 定义属性 @Getter @Setter private String name; @Getter @Setter private Integer age; }
定义在类上也可以
package com.itmayiedu.entity; import lombok.Getter; import lombok.Setter; @Getter @Setter public class UserEntity { // 定义属性 private String name; private Integer age; }
4.@Data注解不但可以定义get/set方法,还有toString等方法
package com.itmayiedu.entity; import lombok.Data; @Data public class UserEntity { // 定义属性 private String name; private Integer age; }
5.浏览器访问getUser接口
6.控制台日志打印
7.所以,我们最终简化实体类代码,使用@Data注解即可,不用使用@Getter,@Setter注解了