day05-Lombok、SpringInitializer
Lombok、Spring-Initializer
1.Lombok
1.1Lombok介绍
- Lombok的作用是:
- 简化Javabean的开发,可以使用Lombok的注解让代码更加简洁
- Java项目中,很多没有技术含量又必须存在的代码:比如POJO类的getter、setter、toString方法;异常处理;IO流的关闭操作等等。这些代码既没有技术含量又影响着代码的美观,因此Lombok应运而生。
- SpringBoot和IDEA的官方支持
- IDEA2020已经内置了Lombok插件
- SpringBoot2.1.x之后的版本也在Starter中内置了Lombok依赖
1.2Lombok常用注解
注解 | 解释 |
---|---|
@Data | 只能标注到类上,综合@Getter、@Setter、@RequiredArgsConstructor @ToString、@EqualsAndHashCode五个注解的功能。 |
@Setter | 可标注到类或属性上,标注到类上表示此类中的所有属性生成setter方法,标注到某个属性上,表示此属性生成setter方法。 |
@Getter | 可标注到类或属性上,标注到类上表示此类中的所有属性生成getter方法,标注到某个属性上,表示此属性生成getter方法。 |
@Log4j | 注解在类上,为类提供一个属性名为log的log4j日志对象 |
@NoArgsConstructor | 只能标注到类上,生成无参的构造方法。 |
@AllArgsConstructor | 只能标注到类上,生成包含所有属性的构造方法,使用此注解时建议和@NoArgsConstructor结合使用,否则此类将没有无参的构造方法。 |
@RequiredArgsConstructor | 写在类上可以代替@AutoWired注解,需要注意的是在注入时需要用final定义,或者使用@notnull注解 |
@Cleanup | 可以关闭流 |
@Builder | 被注解的类加个构造者模式 |
@Synchronized | 加同步锁 |
@SneakyThrows | 等同于try/catch捕获异常 |
@NonNull | 如果修饰于参数,当参数为null时会抛出空指针异常 |
@Value | 只能标注到类上,综合@Getter,@Setter,@ToString,@EqualsAndHashCode,@NoArgsConstructor五个注解的功能,和@Data不同的是,默认将所有属性定义成final的,也就是只会生成getter方法,不会生成setter方法,如果不需要final,则给属性加上@NonFinal注解即可。 |
3.应用实例
(1)使用Lombok要先引入相关库

<!--引入Lombok,使用版本仲裁--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
(2)User.java
package com.li.springboot.bean; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; /** * @author 李 * @version 1.0 */ //@ToString //在编译时,生成toString方法,默认情况下也会生成一个无参构造器 //@Data //等价于@Getter+@Setter+@RequiredArgsConstructor+@ToString+@EqualsAndHashCode //@NoArgsConstructor //编译时会生成无参构造器,它的意义在于显式定义,防止会有参构造器覆盖 //@AllArgsConstructor //编译时生成全参构造器(注意如果没有声明无参构造器时,全参构造器会覆盖它) public class User { private Integer id; private String name; private String address; }
4.安装插件
- 不安装插件也可以使用基本的注解,比如@Data,@Getter等
- 但是不能使用其扩展功能,比如日志输出

演示使用Lombok-@Slf4j
(1)User.java
package com.li.springboot.bean; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; import org.springframework.stereotype.Component; /** * @author 李 * @version 1.0 */ @Component @ToString @Getter @Setter @NoArgsConstructor public class User { private Integer id; private String name; private String address; }
(2)控制器
package com.li; import com.li.springboot.bean.User; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; /** * @author 李 * @version 1.0 */ @Slf4j @Controller public class HiController { @Resource private User user; @RequestMapping("/user") @ResponseBody public User user() { //使用@Slf4j日志输出 //普通方式输出: log.info("user="+user); //占位符方式输出: log.info("user={},myuser={}",user,user); return user; } }
注意,如果以json格式返回,那么Javabean中需要设置Getter和Setter方法。


2.Spring-Initializer
2.1Spring Initializer介绍
Spring Initializer的作用
- 程序员通过Maven Archetype 来生成Maven项目,项目原型相对简陋,需要手动配置,比较灵活。
- 通过Spring官方提供的Spring Initializer来构建Maven项目,能完美支持IDEA和Eclipse,让程序员来选择需要的开发场景(starter),还能自动生成自动类和单元测试代码
- Spring Initializer对IDEA版本有要求,还需要注意网络问题
2.2使用演示
演示使用Spring-Initializer创建SpringBoot项目,并支持web应用场景,支持mybatis
2.2.1方式1-IDEA创建
(1)File-New-Project 创建项目
(2)选择Spring Initializer(如果没有看到这个选项,需要安装Spring Initializer插件)

(3)选择版本和依赖

(4)项目创建好之后自动生成启动类和单元测试代码

2.2.2方式2-官网创建下载
(1)直接到官网去创建项目然后下载

(2)下载完毕,使用idea打开,它的结构和方式一生成的一样

2.3注意事项和使用细节
如果通过Spring Initializer创建的pom.xml文件报错,可能是版本问题。解决方式是:指定版本和当前的SpringBoot一致,再刷新maven即可解决
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库