勾选好对应的选项好,创建工程时即会在
pom.xml配置好对应的jar包
image.png
Spring Boot DevTools
devtools的深层原理:使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。
lombok
想要解决了的是在我们实体
Bean中大量的Getter/Setter方法,以及toString,hashCode等可能不会用到,但是某些时候仍然需要复写,以期方便使用的方法;在使用Lombok之后,将由其来自动帮你实现代码生成,注意,其是 在运行过程中,帮你自动生成的 。就是说,将极大减少你的代码总量。
SpringBoot中使用lombok
- 添加依赖
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>
- 编写一个实体类 User,使用@Data注解
@Data
public class User {
private String name;
private int age;
}
- 编写测试方法,测试@Data的作用
@Test
public void testUser(){
User user = new User();
user.setName("AnyCode");
user.setAge(20);
System.err.println(user.toString());
}
输入图片说明
lombok的注解介绍
@NonNull :
让你不在担忧并且爱上NullPointerException
@CleanUp :
自动资源管理:不用再在finally中添加资源的close方法
@Setter/@Getter : 自动生成set和get方法
@ToString : 自动生成toString方法
@EqualsAndHashcode :
从对象的字段中生成hashCode和equals的实现
@NoArgsConstructor/
@RequiredArgsConstructor/
@AllArgsConstructor
自动生成构造方法
@Value : 用于注解final类
@Builder : 产生复杂的构建器api类
@SneakyThrows : 异常处理(谨慎使用)
@Synchronized : 同步方法安全的转化
@Getter(lazy=true) :
@Log : 支持各种logger对象,使用时用对应的注解,如:@Log4j
@Data : 所有的注解我们都可以使用这一个注解来完成
推荐使用技巧
- 在 Bean / Entity 类上使用 @Data 注解。
- 需要使用 Log 对象的地方使用 @Log4j(依项目日志框架决定)。
- 注意:lombok 的注解不能被继承。
- 如果你不想将注解用在全部的成员变量上,而是仅仅部分变量上,那么你可以在具体的变量上添加注解即可
IDEA中使用lombok
如果想让lombok生效我们还需要针对idea工具进行插件的安装,下面我们按照顺序打开Idea配置
File > Settings > Plugins > Browse repositories... > 输入lombok,插件就会被自动检索出来,如下图所示:
输入图片说明
我的工具已经安装了该插件,所有在右侧是没有任何按钮的,如果你的工具没有安装该插件,
右侧会有一个绿色的按钮,按钮的内容则是Install,点击安装后重启Idea就可以了。
缺点:
- 对队友不友好,需要添加依赖和IDE插件,侵入性很高。
- 对代码不友好,减少代码本质是缺失代码的。
- 对调试不友好,想要知道某个类中的属性的getter方法都被哪些类引用的,就很复杂了。
- 对升级不友好,版本兼容性。
- 破坏封装性,对类中的所有属性都定义了getter/setter方法。
Spring Configuration Processor
springboot中获取配置文件的方式,通常大家最常用的是@Value("${mail.username}")的形式,也可以用spring-boot-configuration-processor来更优雅得读取配置文件
pom.xml配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
定义配置文件
mail.username=wjh
mail.password=wjh123
新建配置文件读取类
@Data
@Configuration
@EnableConfigurationProperties(MailConfig.class)
@ConfigurationProperties(
prefix = MailConfig.PREFIX, ignoreInvalidFields = true
)
public class MailConfig {
// 这里对应配置文件中的mail前缀
public static final String PREFIX = "mail";
private String username;
private String password;
}
取用配置
先注入配置文件类
@Autowired
private MailConfig mailConfig;
取配置文件
String userName = mailConfig.getUsername();















网友评论