DevTools
是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去
只要在依赖里面写好了就行了,不需要其他特别的动作
当我们修改了Java类后,IDEA默认是不自动编译的,而devtools又是监测classpath下的文件发生变化才会重启应用,所以需要设置IDEA的自动编译:
File -> Settings -> Build,Execution,Deployment -> Compiler 中的 Build Project automatically 为选中
ctrl + shift + alt + /,选择Registry,勾上 Compiler autoMake allow when app running
maven依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
Lombok
大致意思是Lombok通过增加一些“处理程序”,可以让java变得简洁、快速。
Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量,一旦修改属性,就容易出现忘记修改对应方法的失误。
Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。出现的神奇就是在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法。这样就省去了手动重建这些代码的麻烦,使代码看起来更简洁些。
maven依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
Configuration Properties
一个便捷功能是外部化配置,可以轻松访问属性文件中定义的属性。
maven依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
Session
在单应用中我们的session来保存用户信息,通常会保存在服务器中(如tomcat),但是我们把应用搭建成分布式的集群,然后利用LVS或Nginx做负载均衡,那么来自同一用户的Http请求将有可能被分发到两个不同的应用中。
那么如何解决在分布式中的session共享问题。可行的方案有memcached实现session共享,也可以用redis实现。今天主要介绍Spring Session.
Spring Session提供了一个API和实现来管理用户的会话信息,同时也使得支持集群会话而不被绑定到应用程序容器特定的解决方案而变得微不足道。
实际上,我们不使用Tomcat的HttpSession,而是将session Id值持久化到Redis中。Spring Session将使用由Redis支持的实现替换HttpSession。
maven依赖:
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
Cache
配合spring boot starter redis 或者其他缓存组件 可以很简单的使用缓存。
spring cache 支持的缓存类型:Generic、JCache (JSR-107)、EhCache 2.x、Hazelcast、Infinispan、Redis、Guava、Simple
如果不满足上述的缓存方案 可以自实现 cacheManager。
maven依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
Validator
校验用户提交的数据的合理性的,比如是否为空了,密码长度是否大于6位,是否是纯数字的,等等。
maven依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
retry
该工具把重试操作模板定制化,可以设置重试策略和回退策略,同时重试执行实例保证线程安全。
maven依赖:
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
Aspects
AOP:Aspect Oriented Programming,面向切面编程
maven依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>