1.将spring boot项目打包成可执行的jar 并运行
点击项目右侧的Maven - Lifecyc - package 即可(第一次使用需要联网?安装相应服务)
运行的话用cmd到所在路径使用命令 java -jar jarName 就行。
因为打包好的jar包包含内嵌的tomcat组件,所以当前环境就算不按照tomcat也能运行成功
2.POM解析
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
spring-boot-starter-parent 包含了项目中所有组件的版本
spring-boot-starter 表示各种依赖,场景启动器。比如我要用到web,就添加spring-boot-starter-web依赖(场景)就可以了,而他的版本受spring-boot-starter-parent控制
3.关于注解
@SpringBootApplication:这是一个主配置类,项目运行该类的main方法来启动
@SpringBootConfiguration:这是一个配置类(SpringBoot项目所用)
@RestController:@ResponseBody + @Controller
@Configuration:这是一个配置类(Spring项目所用)
@Component:这是一个SpringBoot组件(和@Bean相似,告知SpringBoot配置该bean)
@EnableAutoConfiguration:开启自动配置功能
@ConfigurationProperties:(只有在容器的组件@Component中才能使用)将本类中的所有属性和配置文件中的相关配置进行绑定
@ConfigurationProperties(prefix = “xxx”):将配置文件中xxx下面的所有属性进行绑定
@Value:配置单个属性
@Validated:JSR303数据校验
@PropertySource(value = {“classpath:指定配置文件”})
@PropertySource(value = {“classpath:指定配置文件”})
@Configuration:指明当前类是一个配置类,就是用来代替之前的Spring配置文件
@Bean:将方法的返回值添加到容器中,容器中这个组件默认的id就是方法名
4.自动配置的SpringBoot项目的resources文件夹
resources.static:存放静态资源:js css images
resources.templates:存放模板页面(SpringBoot默认jar包使用嵌入tomcat,默认不支持jsp页面);可以使用模板引擎(freemarker , thymeleaf)
resources.application.properties:SpringBoot应用的全局配置文件,用来修改一些默认配置;
5.关于application.yml和yml语法以及配置相关
application.yml和application.properties是一样的作用:全局配置文件
yml 以数据为中心,比 xml json等更适合做配置文件
举例:
yml:
server:
port: 8081
xml:
<server>
<port>8081</port>
</server>
yml语法:
基本语法:
k:(空格)v:表示一个键值对(空格必须有)
以空格的缩进来控制层级关系;只要左对齐的一列数据,都是同一个层级的
关于 - :last-name 和 lastName等价
属性和值大小写敏感!
值的写法:
字面量:普通的值:数字,字符串,布尔
k: v:直接来写
字符串不用加上单/双引号
“”:双引号:会转义特殊字符:比如 \n就会换行
‘’:单引号:不会转义特殊字符:比如 \n 仍然以 \n打出
对象,Map(键值对):
对象还是 k: v 方式,在下一行写对象的属性和值的关系
friends:
name: 111
age: 22
行内写法:
friends: {name: 111,age: 22}
数组(List,Set):
用 - (-后面有空格)值表示数组中的一个元素
pets:
- cat
- dog
- pig
行内写法:(:后面有空格)
pets: [cat,dog,pig]
关于配置的一些其他东西:
@ConfigurationProperties:(只有在容器的组件@Component中才能使用)将本类中的所有属性和配置文件中的相关配置进行绑定
@ConfigurationProperties(prefix = “xxx”):将配置文件中xxx下面的所有属性进行绑定
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
导入配置文件处理器,配置文件进行绑定就会有提示
@Value 和 @ConfigurationProperties 获取值比较
@ConfigurationProperties | @Value | |
---|---|---|
功能 | 批量注入属性 | 一个个指定 |
松散绑定 | last-name == lastName(支持) | last-name != lastName(不支持) |
SpEL | 不支持 | 支持 |
JSR303数据校验(@Validated) | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
使用情景:
@Value:只是在业务逻辑中需要获取一下配置文件中的某项值,可以使用该注解
@ConfigurationProperties:如果我们专门写了一个javaBean来和配置文件进行映射,可以使用该注解
指定配置文件注解 @PropertySource 和 @ImportResource
@PropertySource(value = {“classpath:指定配置文件”}):SpringBoot默认从默认配置文件中寻找配置,如果我们想把许多繁琐的配置分成多个单独的配置文件,可以用此注解指定对应的自定义配置文件
@Component
@ConfigurationProperties(prefix = "person")
@PropertySource(value = {"classpath:person.properties"})
public class Person {
@ImportResource(locations = {“classpath:指定配置文件”}):导入Spring的配置文件,让配置文件里面的内容生效;Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件也不能自动识别,想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上
@ImportResource(locations = "classpath:beans.xml")
@SpringBootApplication
public class HelloworldApplication {
public static void main(String[] args) {
SpringApplication.run(HelloworldApplication.class, args);
}
}
SpringBoot推荐给容器中添加组件的方式:推荐使用全注解的方式
@Configuration:指明当前类是一个配置类,就是用来代替之前的Spring配置文件
@Bean:将方法的返回值添加到容器中,容器中这个组件默认的id就是方法名
配置文件占位符
1.随机数
${random.int} ${random.uuid} .....
2.占位符取之前配置的值,如果没有配置,可以用 : 来指定默认值
person.name = ${person.hello:hello}
6.Profile
1.多Profile文件
我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml
默认使用 application.properties 的配置
2.yml支持多文档块方式
用 — 分割文档块
用 spring.profiles.active 激活
server:
port: 8081
spring:
profiles:
active: dev
---
server:
port: 8085
spring:
profiles: dev
---
server:
port: 8083
spring:
profiles: prod
---
server:
port: 8084
spring:
profiles: test
3.激活指定Profile
1.在配置文件中指定 spring.profile.active=dev
2.命令行: --spring.profiles.active=dev
3.虚拟机参数:-Dspring.profiles.active=dev
7.配置文件加载位置
Spring Boot启动会扫描以下位置的application.properties/yml文件作为Spring Boot的默认配置文件:
- file:./config/
- file:./
- classpath:/config/
- classpath:/
以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置覆盖低优先级配置内容(覆盖属性,而不是覆盖文件,也就是说是“互补”)
我们也可以通过配置spring.config.location来改变默认配置
Spring Boot外部配置加载顺序
https://blog.youkuaiyun.com/nangeali/article/details/82262283