看的是这个教程:
http://c.biancheng.net/spring_boot/
我的理解是,类似一些预定义的library、模块或sdk,里面提供了开发中常用的功能或配置。
Spring Boot 将日常企业应用研发中的各种场景都抽取出来,做成一个个的 starter(启动器),starter 中整合了该场景下各种可能用到的依赖,用户只需要在 Maven 中引入 starter 依赖,SpringBoot 就能自动扫描到要加载的信息并启动相应的默认配置。starter 提供了大量的自动配置,让用户摆脱了处理各种依赖和配置的困扰。所有这些 starter 都遵循着约定成俗的默认配置,并允许用户调整这些配置,即遵循“约定大于配置”的原则。
并不是所有的 starter 都是由 Spring Boot 官方提供的,也有部分 starter 是第三方技术厂商提供的,例如 druid-spring-boot-starter 和 mybatis-spring-boot-starter 等等。当然也存在个别第三方技术,Spring Boot 官方没提供 starter,第三方技术厂商也没有提供 starter。
以 spring-boot-starter-web 为例,它能够为提供 Web 开发场景所需要的几乎所有依赖,因此在使用 Spring Boot 开发 Web 项目时,只需要引入该 Starter 即可,而不需要额外导入 Web 服务器和其他的 Web 依赖。
在pom.xml中引入
下面这个东西是所有所有spring boot项目的父级依赖,称为版本仲裁中心,可以对项目内的部分常用依赖进行统一管理。
<!--SpringBoot父项目依赖管理-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.5</version>
<relativePath/>
</parent>
把配置文件中的值与 JavaBean 中对应的属性进行绑定。
通常会把一些配置信息写在配置文件里(如db配置),然后通过java代码去读取。
SpringBoot 提供了以下 2 种方式进行配置绑定:
如:@ConfigurationProperties(prefix = “person”) ,它表示将这个 JavaBean 中的所有属性与配置文件中以“person”为前缀的配置进行绑定。
person:
lastName: 张三
age: 18
boss: false
birth: 1990/12/12
maps: { k1: v1,k2: 12 }
lists:
‐ lisi
‐ zhaoliu
dog:
name: 迪迪
age: 5```
若只是获取配置文件中的某项值,则推荐使用 @Value 注解;
若专门编写了一个 JavaBean 来和配置文件进行映射,则建议使用 @ConfigurationProperties 注解。
@PropertySource(value = "classpath:person.properties")//指向对应的配置文件
@ConfigurationProperties(prefix = "person")
public class Person {
//...
}
application-{profile}.properties/yml
如:src/main/resources 下添加 4 个配置文件:
application.properties:主配置文件
application-dev.properties:开发环境配置文件
application-test.properties:测试环境配置文件
application-prod.properties:生产环境配置文件
其中,{profile} 一般为各个环境的名称或简称,例如 dev、test 和 prod 等等。
*或者在同一个profile(yaml)中,通过“—"将文件分成不同部分
环境激活的方式
spring.profiles.active=prod
mvn clean package
...
java -jar helloworld-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
java -Dspring.profiles.active=prod -jar helloworld-0.0.1-SNAPSHOT.jar
一般是application.properties,但它可以存在多个
file:./config/*/
file:./config/
file:./
classpath:/config/
classpath:/
注:file: 指当前项目根目录;classpath: 指当前项目的类路径,即 resources 目录。
以上所有位置的配置文件都会被加载,且它们优先级依次降低,序号越小优先级越高。其次,位于相同位置的 application.properties 的优先级高于 application.yml。
以下是常用的 Spring Boot 配置形式及其加载顺序(优先级由高到低):
命令行参数
来自 java:comp/env 的 JNDI 属性
Java 系统属性(System.getProperties())
操作系统环境变量
RandomValuePropertySource 配置的 random.* 属性值
配置文件(YAML 文件、Properties 文件)
@Configuration 注解类上的 @PropertySource 指定的配置文件
通过 SpringApplication.setDefaultProperties 指定的默认属性
pom.xml中的groupId和artifactId指的是什么意思?
如何导入spring配置(这是啥)我感觉不重要