基于SpringBoot快速搭建一个web应用
- 构建项目地址
- SpringBoot: https://start.spring.io
- SpringCloud: https://cloud.spring.io
- 也可以使用IDEA内置的工具
- 需要选择的依赖
- spring-boot-starter-web,全栈web开发模块,包含嵌入式Tomcat,SpringMVC
- spring-boot-starter-test,通用测试模块,包含Junit,Mockito等
- SpringBoot内置tomcat,所以SpringBoot可以打成jar,通过java -jar xxx.jar 运行应用
- 拓展: SpringBoot的几个特点
- 嵌入式tomcat,jetty等作为servlet容器
- 各种stater POM,以模块的方式提供功能,简化依赖管理
- 自动进行Spring框架的配置
- 自带应用的监控与管理,actuator
- 可以通过命令行修改属性值(与SpringBoot配置的加载顺序有关)
RESTfull API接口测试
单元测试:@RunWith和@SpringBootTest,使用MockMvc对象模拟http请求,测试Controller
SpringBoot多环境配置
- application.properties配置文件
- 配置:使用key=value的形式,如server.port=8888
- 读取:从配置文件读取值并注入@Value(“{xxx.xxx}”),也可以用命令行的方式注入参数
- 多环境配置
- 命名格式application-{profile}.properties,如application-dev.properties
- 激活 spring.profiles.active={profile},命令行也可,如java -jar xxx.jar —spring.profiles.active=xxx
- 多环境配置思路
- 默认配置: 在application.properties配置通用内容,并激活,作为开发配置
- 在applications-{profile}.properties中配置不同环境的配置
- 通过命令行方式去激活不同环境的配置
- 配置的加载顺序,数字越小优先级越高(包含外部化配置的原理)
- 常见: 1.命令行参数, 4.java的系统属性, 5.操作系统环境变量
SpringBoot神器之一actuator: 应用的监控与管理
- 引入依赖spring-boot-starter-actuator
- 原生端点
- 应用配置类:获取应用加载的应用配置、环境变量、自动化配置报告与SpringBoot应用密切相关的配置类信息
- 度量指标类:获取应用运行时的度量指标,提供动态变化的报告内容,如http请求统计,内存等
- 操作控制类:原生的只提供一个应用开关,慎用
详细解析
- 应用配置类
- /autoconfig,获取应用的自动化配置报告,包含positiveMatches(条件匹配成功)和negativematches(条件匹配失败),可以由此发现一些配置没有生效的具体原因
- /configprops,获取应用的属性信息,可以通过prefix属性关闭指定端点
- /env,与/configprops不同,该端点用来获取所有可用的环境属性报告
度量指标类
/metrics,获取内存信息,线程信息,垃圾回收等重要指标,其中start-start代表了对静态资源的访问次数,还可以在程序中增加自定义统计值
- 示例:统计接口被访问的次数
@Autowired private CounterService counterService; @RequestMapping("/hello") public String hello() { counterService.increment(String metricName); return "OK"; }
- 示例:统计接口被访问的次数
- /health,获取健康信息指标
- 根据自动化配置,已经可以检测地空间磁盘,数据源连接,Mongo,Redis,Solr服务等是否可用
- Staters POMs没有封装RocketMQ,可以实现HealthIndicator,覆写health(),并将整个类用@Component修饰
- /dump,获取应用中所有运行的线程信息
- /trace,获取http跟踪信息,在内存中保留近100条记录
- 应用配置类