Spring Boot 揭秘
SpringBoot基础
微服务
- 解决大一统的服务化架构的问题
- 代码冲突问题
- 交付复杂,影响面大
- 测试困难
- 微服务的好处
- 可扩展性
- 隔离性
- 灵活性,多语言多技术生态
- 微服务的挑战
- 保持微服务的互通性
- 通过标准化降低开发成本
JavaConfig常用注解
- @Bean : 用于方法时,其返回值将作为bean注册到Ioc容器,方法名默认为id,也可以指定id
- @PropertySource : 加载*.properties文件,与@PropertySourcePlaceholderConfigurer配合使用来替换占位符
- @ImportResource : 加载*.xml文件
- @Import : 在当前JavaConfig配置类中整合另一个JavaConfig配置类
- @Conditional: 用于实现基于条件的“智能”自动化配置
- @AutoConfigureBefore/@AutoConfigurateAfter:用于调整自动配置的顺序
@SpringBootApplication
- 是一个三体复合Annotation
- @Configuration : 用于类表示这是一个JavaConfig配置类
- @EnableAutoConfiguration : 与其它的Enable开头的Annotation一样,通过@Import和SpringFactoriesLoader将所有@Configuration汇总加载到当前SpringBoot创建并使用的Ioc容器
- @ComponentScan : 扫描包,加载那些需要ComponentScan来加载的Bean
- 默认扫描SpringBootApplication启动类所在包与子包
- 如果需要扫描依赖jar包里的annonation,需要手动设置包路径@ComponentScan("com.citi.cv.rates")
- 示例
- @SpringBootApplication(scanBasePackages = { "com.common, com.db" )
- @PropertySource(value = { "x.${SERVER_ENV}.properties" })
- SpringApplication.run(BondLevelsLiveApp.class, args);
约定优于配置
- 配置方式的优先级
- 命令行参数
- 系统环境变量
- 文件系统中的配置文件
- classpath中的配置文件
- 代码中的配置项
- Spring默认配置文件application.properties
- 可以放在项目根目录
- 或者放在根目录下的config子目录下
其他
- spring-boot-maven-plugin可以将项目打包成可执行jar包
- http://start.spring.io/ : 官方构建项目脚手架
spring-boot-starter
开箱即用的依赖模块
- 以spring-boot-starter开头
- parent都是spring-boot-starters
- spring-boot-starters的parent是spring-boot-parent
- spring-boot-parent的parent是spring-boot-dependencies
spring-boot-starter-web
- Maven项目的webapp下面的所有东西放至src/main/resource下面
- src/main/resource/static下面放html,js,css等静态资源,可以跟在contextPath后面访问
spring-boot-starter-actuator
spring boot 2的变化
- endpoints.xxx 变为management.endpoint.xxx :注意endpoints的s没有了
- mapping path加上actuator
- management.endpoints.web.base-path=/ 修改默认path
- 默认只开启health/info
- management.endpoints.jmx.exposure.exclude
- management.endpoints.jmx.exposure.include=* 开启所有功能,默认*
- management.endpoints.web.exposure.exclude=env
- management.endpoints.web.exposure.include* 开启所有功能,默认 info, health
应用配置类
- mappings : Spring MVC controller映射
- beans : 查看spring容器的bean
- env : 查看系统属性,环境变量,自定义属性的配置
- configprops : 查看application属性的配置,属性的配置路径
- autoconfig :查找生效与未生效的自动化配置
- info : 查看application自定义信息,通过info.app.name=CitiVelocity, info.app.version=1.0.1配置
指标监控类
- metrics: 监控内存,线程数,gc, http请求,启动时间等信息
- health : 检查服务器状态,各种数据库,服务器的链接状态,磁盘空间使用情况
- dump : 所有线程详细信息
- trace : 最近100条http请求信息
操作控制类
- shutdown :
- 正确关闭spring boot 应用的方法
- endpoints.shutdown.enabled=true
- management.security.enabled=false 或者 endpoints.shutdown.sensitive=false关闭用户验证
- POST请求,可以用curl -X POST http://localhost:7070/MarkdownNote/shutdown
- 搭配spring boot security进行权限校验
其他
- 有些功能需要配置spring security或者设置management.security.enabled=false
spring boot 配置
- application.properties放在src/main/resource下面
- server.port=8081
- server.contextPath=/MarkdownNote
- server.tomcat.basedir=C://Base
- 除了INT,还支持YAML格式,但是YAML目前不支持@PropertySource来加载配置文件
- 配置文件里面也支持${xxx}进行参数引用
- 随机参数
- ${random.value}
- ${random.int}
- ${random.long}
- ${random.int[0,100]}
- 不同环境
- application-{profile}.properties : profile一般为dev,uat,prod
- spring.profiles.active=uat指定加载uat的配置
- 修改可执行jar包的配置文件
- 如果jar包同级目录下有application.properties,会直接加载这个而不是jar包里的
配置详解
- 修改默认path : management.endpoints.web.base-path
- springboot 2.0.x 默认/actuator
开发注意事项
修改spring boot内置的tomcat的 docBase目录
如果有src/main/webapp目录,docBase默认为此目录
如果没有则使用temp目录C:\Users\xs47604\AppData\Local\Temp\tomcat-docbase.58621522083049082.8081
如果打成可执行jar包也使用temp目录
自定义目录方法
@Bean
public EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer() {
EmbeddedServletContainerCustomizer s = (ConfigurableEmbeddedServletContainer container) -> {
container.addInitializers();
File file = new File("C://docbase");
if(!file.exists()) file.mkdirs();
container.setDocumentRoot(file);
};
return s;
}
创建resourcees目录下的File
- Resource resource = new ClassPathResource("DataSource.xml");
- File file = resource.getFile();
- 打包成jar之后不能通过操作系统的文件系统找到文件,可以使用InputStream
- InputStream inputStream = resource.getInputStream();
- File file = new File(inputStream)
Spring Boot 揭秘的更多相关文章
- Spring Boot 揭秘与实战 附录 - Spring Boot 公共配置
Spring Boot 公共配置,配置 application.properties/application.yml 文件中. 摘自:http://docs.spring.io/spring-boot ...
- Spring Boot 揭秘与实战 自己实现一个简单的自动配置模块
文章目录 1. 实战的开端 – Maven搭建 2. 参数的配置 - 属性参数类 3. 真的很简单 - 简单的服务类 4. 自动配置的核心 - 自动配置类 5. spring.factories 不要 ...
- Spring Boot 揭秘与实战 源码分析 - 工作原理剖析
文章目录 1. EnableAutoConfiguration 帮助我们做了什么 2. 配置参数类 – FreeMarkerProperties 3. 自动配置类 – FreeMarkerAutoCo ...
- Spring Boot 揭秘与实战 源码分析 - 开箱即用,内藏玄机
文章目录 1. 开箱即用,内藏玄机 2. 总结 3. 源代码 Spring Boot提供了很多”开箱即用“的依赖模块,那么,Spring Boot 如何巧妙的做到开箱即用,自动配置的呢? 开箱即用,内 ...
- Spring Boot 揭秘与实战(九) 应用监控篇 - 自定义监控端点
文章目录 1. 继承 AbstractEndpoint 抽象类 2. 创建端点配置类 3. 运行 4. 源代码 Spring Boot 提供的端点不能满足我们的业务需求时,我们可以自定义一个端点. 本 ...
- Spring Boot 揭秘与实战(九) 应用监控篇 - HTTP 健康监控
文章目录 1. 内置 HealthIndicator 监控检测 2. 自定义 HealthIndicator 监控检测 3. 源代码 Health 信息是从 ApplicationContext 中所 ...
- Spring Boot 揭秘与实战(九) 应用监控篇 - HTTP 应用监控
文章目录 1. 快速开始 2. 监控和管理端点3. 定制端点 2.1. health 应用健康指标 2.2. info 查看应用信息 2.3. metrics 应用基本指标 2.4. trace 基本 ...
- Spring Boot 揭秘与实战(八) 发布与部署 - 远程调试
文章目录 1. 依赖 2. 部署 3. 调试 4. 源代码 设置远程调试,可以在正式环境上随时跟踪与调试生产故障. 依赖 在 pom.xml 中增加远程调试依赖. <plugins> &l ...
- Spring Boot 揭秘与实战(八) 发布与部署 - 开发热部署
文章目录 1. spring-boot-devtools 实现热部署 2. Spring Loaded 实现热部署 3. 模板文件热部署 4. 源代码 Spring Boot 支持页面与类文件的热部署 ...
- Spring Boot 揭秘与实战(七) 实用技术篇 - StateMachine 状态机机制
文章目录 1. 环境依赖 2. 状态和事件 2.1. 状态枚举 2.2. 事件枚举 3. 状态机配置4. 状态监听器 3.1. 初始化状态机状态 3.2. 初始化状态迁移事件 5. 总结 6. 源代码 ...
随机推荐
- python 自然语言处理(六)____N-gram标注
1.一元标注器(Unigram Tagging) 一元标注器利用一种简单的统计算法,对每个标注符分配最有可能的标记.例如:它将分配标记JJ给词frequent,因为frequent用作形容词更常见.一 ...
- linux网络操作 ifconfig命令
ifconfig 查看已经被激活的网卡详细信息 "ifconfig eth0" 查看特定的网卡信息 [root@ssgao ~]# ifconfig eth0 eth0 Link ...
- linux图形和命令界面切换
一.系统不在虚拟机中的情况 使用ctrl+alt+F1~6切换到命令行界面:ctrl+alt+F7切换到图形界面 二.系统在虚拟机中的情况 Ctrl+Alt+shift+F1~6切换到命令行界面:使用 ...
- day35 数据库介绍和初识sql
今日内容: 1. 代码: 简易版socketsever 2.数据库(mysql)简单介绍和分类介绍 3.mysql root修改密码 4.修改字符集编码 5.初识sql语句 1.简易版socketse ...
- SQL-34 对于表actor批量插入如下数据
题目描述 对于表actor批量插入如下数据CREATE TABLE IF NOT EXISTS actor (actor_id smallint(5) NOT NULL PRIMARY KEY,fir ...
- freemarker学习 (servlet + freemarker -> Struts2+freemarker -> springMVC+freemarker)
什么是freemarker? freemarker类似于jsp,但不是jsp!怎么说呢?freemarker文件后缀是.ftl,它不像jsp本质是servlet,它将构建模板.解析模板.使用模板分离开 ...
- python中变量命名的基本规则,标识符和关键字
变量的命名 目标 标识符和关键字 变量的命名规则 0.1 标识符和关键字 1.1 标识符 标示符就是程序员定义的 变量名.函数名 名字 需要有 见名知义 的效果,见下图:  标示符可以由 字母.下划 ...
- Alpha冲刺3
前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/9971198.html 作业博客:https://edu.cnblogs.com/campus/ ...
- L293 给地球降温
Countries look at ways to tinker with Earth’s thermostat The idea of cooling the climate with strato ...
- 框架:MVC
MVC 一.介绍 MVC是模型-视图-控制器的缩写,一种软件思想,强制性的把应用程序的输入.处理和输出分开.可以和任何的重定向能解耦. 三部分的任务说明: 视图:获取数据,显示数据 模型:处理数据 控 ...