文章目录
SpringBoot
1. SpringBoot 简介
SpringBoot
是由Pivotal
团队提供的全新框架,其设计目的是简化Spring
应用的初始搭建以及开发过程,其核心特点是: 自动装配和 约定大于配置。
其本质依然是 Spring
框架,使用 SpringBoot
之后可以不使用任何 XML
配置来启动一个服务,使得我们在使用微服务架构时可以更加快速的建立一个应用。
Spring程序的缺点:
- 配置繁琐
- 依赖设置繁琐
SpringBoot程序优点:
- 自动配置
- 起步依赖(简化依赖配置)
- 辅助依赖
2. SpringBoot项目启动
启动类启动
SpringBoot的引导类就是项目的入口,运行main方法即可启动项目
@SpringBootApplication
public class SpringBootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoApplication.class, args);
}
}
Jar包快速启动
- 对springboot项目打包(执行Maven构建指令package)
- 执行启动指令
java -jar springBootDemo-0.0.1-SNAPSHOT.jar
- 带参数启动
java -jar springBootMultiProfileDemo-0.0.1-SNAPSHOT.jar --server.port=929
注意事项: jar包启动指令需要依赖Maven插件支持,需要在pom文件中添加SpringBoot对应的Maven插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
3. 基础配置
3.1 配置格式
application.properties
# 应用服务 WEB 访问端口
server.port=8080
application.yml
# 应用服务 WEB 访问端口
server:
port: 8081
application.yaml
# 应用服务 WEB 访问端口
server:
port: 8082
当三种配置文件同时存在时,加载顺序为: properties > yml > yaml,
注: 命令行参数优先级高于配置文件
YAML文件
YAML是 “YAML Ain’t a Markup Language” 的递归缩写,一种数据序列化格式
这种语言以数据作为中心,而不是以标记语言为重点!
yaml语法:
- 空格不可省,只要是赋值就需要空格
- 以缩进控制层级关系(类似python)
- 大小写敏感(属性和值都是如此)
- # 表示注释
3.2 配置文件属性注入
定义如下配置
enterprise:
name: aaaa
age: 20
tel: 110
subject:
- 1
- 2
- 3
@Value
注解注入
读取name
属性
@Value("${enterprise.name}")
private String name;
使用 Environment
获取全部配置属性
@Resource
private Environment environment;
@GetMapping("/getNameByEnvironment")
@ResponseBody
public String getNameByEnvironment() {
String s1 = environment.getProperty("enterprise.name");
System.out.println("s1 = " + s1);
return s1;
}
@ConfigurationProperties 整体注入
当属性数量多的时候,采用@Value
一个一个注入效率十分低下,这时候我们可以使用@ConfigrationProperties
@ConfigurationProperties作用:
将配置文件中配置的每一个属性的值,映射到这个组件中;
告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
参数 prefix = “enterprise” : 将配置文件中的User下面的所有属性一一对应
定义一个实体类Enterprise
@Component
@ConfigurationProperties(prefix = "enterprise")
public class Enterprise {
private String name;
private Integer age;
private String tel;
private String[] subject;
// 省略getter/setter
}
使用时直接注入这个实体类就可以获取到配置属性了。
注意: @ConfigurationProperties 绑定是松散绑定的
松散绑定 : 以name为例 ,配置文件中子节点命名风格支持 烤肉串风格user-name 标准驼峰命名userName 蛇形命名user_name 全部大写USERNAME
3.3 自定义对象封装数据警告解决方案
<!-- 自定义对象封装数据警告解决方案 -->
<dependency>
<groupId>org.spr