Spring Boot基础
Spring Boot的优点
(1)能够快速创建独立运行的Spring项目以及与主流框架的集成。
(2)使用嵌入式的Servlet容器,应用无需打成War包。
(3)存在很多starters启动器可以帮助项目自动依赖和实现版本控制。
(4)大量的自动配置,简化开发。
(5)开箱即用,无需配置XML文件。
(6)准生产环境的运行时应用监控。
(7)能够与云计算天然集成。
微服务介绍
微服务架构是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦,并提供更加灵活的服务支持。
传统的Web开发方式开发的程序一般被称为单体应用,所有的功能打包在一个War包中,基本没有外部依赖,应用部署在一个Java EE容器中,它包含了Dao、Service、UI等所有逻辑。
单体应用的优点如下:
(1)开发简单,集中式管理。
(2)基本不会重复开发。
(3)功能都在本地,没有分布式的管理和调用消耗。
单体应用的缺点如下:
(1)效率低。开发都在同一个项目中,改代码时冲突不断。
(2)维护难。代码功能耦合在一起,新手不知如何下手。
(3)不灵活。构建时间长,任何小修改都要重构整个项目。
(4)稳定性差。一个微小的问题,都可能导致整个应用崩溃。
(5)扩展性不够。无法满足高并发下的业务需求。
微服务可以把一个大型的单个应用程序和服务拆分为数个甚至数十个支持的微服务,它可扩展单个组件而不是整个应用程序堆栈,从而满足服务等级协议。
微服务的优点如下:
(1)易于开发和维护。一个微服务只会关注一个特定的业务功能,所以业务清晰,代码量少。
(2)单个微服务启动较快。
(3)局部修改容易部署。
(4)技术栈不受限。在微服务架构中,可以结合项目业务及团队的特点,合理选择技术栈。
(5)按需收缩。可根据需求,实现细粒度的扩展。
Spring Boot配置
Spring Boot不仅支持常规的properties配置文件,还支持YAML语言的配置文件。Spring Boot使用一个全局的配置文件来对一些默认配置值进行修改,全局配置文件名称为application.properties或application.yml,全局配置文件通常放在 src/main/resources 目录下或者类路径 /config 下。
yml配置文件
后缀为 .yml 的文件是YAML语言的文件,YAML语言以数据作为中心,比Json、XML等更适合做配置文件。它和其他高级语言类似,并且可以简单表达清单、散列表、标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构和各种配置文件。
YAML语言基本语法注意点如下:
(1)大小写铭感。
(2)使用缩进表示层级关系。
(3)缩进不允许使用Tab,只允许空格。
(4)缩进的空格数不重要,只要相同层级的元素左对齐即可。
(5)“#”表示注释。
YAML语言支持3种数据结构:
(1)字面量:普通的值。
(2)数组:一组按次序排列的值。
(3)对象:键值对的集合。
1.字面量(数字、字符串和布尔值等)
YAML语言中,字面量的写法最简单,语法为“key: value”(注意:冒号后面需要跟一个空格;当字面量值为字符串时,需要注意的时字符串默认不使用引号,当字符使用单引号或者双引号时,单引号中的字符串会转义特殊字符)。
2.对象
在YAML语言中,对象使用一组键值对来表示,对象的属性和值在对象名的下一行,需要注意缩进。
3.数组
在YAML语言中,使用“- 值”表示数组中的一个元素,“-”与值之间有个空格。
@ConfigurationProperties注解
可以通过@ConfigurationProperties注解将application.properties或application.yml配置中的参数信息自动封装到实体类中使用。
通过@Value注解也可以获取到配置文件中的值,格式为 @Value("${变量名}")
@PropertySources注解
@ConfigurationProperties注解与@Value注解可以从全局配置文件中取值,然后为需要的属性赋值,但是如果应用比较大时,所有的配置信息都在一个配置文件中就会显得比较冗杂,同时也不太好维护,这时可以将配置信息添加到自定义的properties配置文件中,然后使用@PropertySources注解加载指定的配置文件。
@ImportResource注解
在Spring框架中,用到最多的就是XML配置文件,而在Spring Boot里面是没有XML配置文件的,开发者自己编写的XML配置也不能自动识别,如果需要在Spring Boot中识别XML配置文件,可以使用@ImportResource注解来导入一个传统的XML配置文件,让配置文件中的内容失效。
使用@Configuration注解和@Bean注解添加组件
使用@ImportResource注解可以导入原始的XML配置文件,但是在Spring Boot中不提倡使用XML配置文件为容器添加组件,Spring Boot推荐使用全注解方式来为容器添加组件。
@Configuration注解用于定义配置类,添加了@Configuration注解的配置类相当于Spring框架中的XML配置文件。@Bean注解是一个方法级别上的注解,主要用在@Configuration注解的类中,它相当于XML配置文件中的<bean>标签,它将方法的返回值添加到容器中,容器中添加的组件默认的id为方法名。
Spring Boot多环境配置
配置文件占位符
在Spring Boot配置文件中,开发者可以使用Spring Boot提供的一些随机数函数,如${random.value}、${random.int}、${random.long}、${random.int(10)}、${random.int[100,200]}、${random.uuid}。
也可以通过“${变量名}”来调用配置文件之前已经定义的值。
也可以通过 ${cz.name:张三}这种格式给不存在的属性提供默认值。
配置文件优先级
Spring Boot启动时会扫描application.properties或者application.yml作为默认的配置文件,默认配置文件一般会保存在以下位置:
工程根目录:./config/
工程根目录:./
classpath:/config/
classpath:/
上述路径是按照优先级从高到低的顺序进行排序,所有位置的配置文件都会被加载,高优先级配置内容会覆盖低优先级配置内容。
可以通过指定配置spring.config.location来改变默认配置,一般在项目已经打包后,开发者可以通过指令 java -jar xxx.jar --spring.config.location=D:/xxx/application.yml 来加载外部配置。
多环境配置
Spring Boot对不同环境提供不同配置功能的支持,可以通过激活和指定参数等方式来快速切换开发和测试环境。
1.多配置文件方式
Spring Boot项目支持多配置文件的形式来支持不同环境的引用,但是配置文件的名称格式必须符合如下格式:application-xxx.properties 。
在Spring Boot项目的类路径下分别创建application-dev.properties、application-test.properties、application-prod.properties这3个配置文件作为开发环境、测试环境和生产环境的配置文件。
需要在默认的配置文件中激活所需要的环境配置,如启用测试环境文件:spring.profiles.active=test。
2.多文档块方式
在Spring Boot项目中,yml配置文件实现多环境的配置更加简单。在yml配置文件中使用多文档块的方式实现多环境配置,在application.yml配置文件中使用3个横杠“---”来区别文档块。
application.yml通过spring.profiles设置文档块名,然后通过spring.profiles.active指定需要启用的文档块名。
Spring Boot日志
在全局配置文件中设置xxx包下的日志输出级别(debug、info、warn、error)如:logging.level.包名=debug。
在全局配置文件中设置日志输出路径和日志文件名称如:logging.file.name=F:/springboot.log
本文来自博客园,作者:爱吃糖的橘猫,转载请注明原文链接:https://www.cnblogs.com/sglblog/p/15231927.html