1. 配置文件
1. 基本使用
- 使用
- 配置文件
classpath:application.properties
typescript
spring.jdbc.driver=com.mysql.cj.jdbc.Driver
spring.jdbc.url=jdbc:mysql://localhost:3306/batis
spring.jdbc.username=root
spring.jdbc.password=123456
- 使用配置文件的值:
@Value("${key:defaultValue}")
typescript
@Service
public class DataSourseTest {
@Value("${spring.jdbc.driver}")
private String driver;
@Value("${spring.jdbc.url}")
private String url;
@Value("${spring.jdbc.username:root}")
private String username;
@Value("${spring.jdbc.password:123456}") // 默认值
private String password;
}
-
调用配置文件的顺序
file:./config/
:首先在Spring Boot 当前工作目录下的config
文件夹中查找。
注意:如果没有找到,会继续找application.yml,如果这两个都没有找到,才会进入以下位置查找,以此类推。file:./
:如果在当前工作目录下config
目录中找不到时,再从当前工作目录中查找。classpath:/config/
:如果从工作目录中找不到,会从类路径中找,先从类路径的/config/
目 录下寻找配置文件。classpath:/
:如果在/config/
下没有找到,它会在类路径的根目录下查找。
-
配置文件的合并
-
properties
文件的合并将
application-mysql.properties
与application-redis.properties
两个文件合并到application.properties
-
yml
文件的合并将
application-mysql.yml
与application-redis.yml
两个文件合并到application.yml
-
yaml
# application.properties
spring.config.import=classpath:application-mysql.properties,classpath:application-redis.properties
# application.yml
spring:
config:
import:
- classpath:application-mysql.yml
- classpath:application-redis.yml
2. 用于多环境切换
常用于区分开发(development)、测试(testing)、预生产(staging)和生产(production)等不同阶段的环境
- 开发环境的配置文件名一般叫做:
application-dev.properties
yml
spring.datasource.username=dev
spring.datasource.password=dev123
spring.datasource.url=jdbc:mysql://localhost:3306/dev
- 测试环境的配置文件名一般叫做:
application-test.properties
properties
spring.datasource.username=test
spring.datasource.password=test123
spring.datasource.url=jdbc:mysql://localhost:3306/test
- 预生产环境的配置文件名一般叫做:
application-preprod.properties
properties
spring.datasource.username=preprod
spring.datasource.password=preprod123
spring.datasource.url=jdbc:mysql://localhost:3306/preprod
- 生产环境的配置文件名一般叫做:
application-prod.properties
properties
spring.datasource.username=prod
spring.datasource.password=prod123
spring.datasource.url=jdbc:mysql://localhost:3306/prod
- 第一种方式:在
application.properties
文件中添加这个配置:spring.profiles.active=prod
- 第二种方式:在命令行参数上添加:
--spring.profiles.active=prod
3. 配置文件属性值绑定到Bean
- 配置文件:application.properties
java
mydata.names=[tom,jerry]
mydata.adds-array[0].city=Beijing
mydata.adds-array[0].street=CaoYang
mydata.adds-array[1].city=ShangHai
mydata.adds-array[1].street=PuDong
mydata.adds-list[0].city=GuangZhou
mydata.adds-list[0].street=TianHe
mydata.adds-list[1].city=ShenZhen
mydata.adds-list[1].street=NanShan
mydata.adds-map.add1.city=HangZhou
mydata.adds-map.add1.street=XiHu
mydata.adds-map.add2.city=XiAn
mydata.adds-map.add2.street=ChangAn
- 配置文件:yml格式
yaml
mydata:
names:
- tom
- jerry
adds-array:
- city: beijing
street: chaoyang
- city: shanghai
street: pudong
adds-list:
- city: beijing
street: chaoyang
- city: shanghai
street: pudong
adds-map:
add1:
city: beijing
street: chaoyang
add2:
city: shanghai
street: pudong
- 示例,属性值是复杂类型
java
// 生命该类为配置类。配置类也会生成bean并纳入ioc管理
@Configuration
//@Component // 使用Component可以代替Configuration
// 将配置文件绑定到类。prefix:前缀;此前缀的属性对应的类
@ConfigurationProperties(prefix = "mydata")
public class UserConfiguration {
private String[] names; // 属性名必须与配置文件中的属性相同
private Address[] addsArray;
private List<Address> addsList;
private Map<String, Address> addsMap;
// set方法
}
java
public class Address {
private String city;
private String street;
// set方法
}
4. 配置文件的值赋值给第三方库中的Bean
- 配置文件
java
otherdata.address.city=beijing
otherdata.address.street=chaoyang
java
@Configuration
public class OtherClass {
// 在注解@Configuration中使用@Bean标注该方法返回值是一个Bean,并纳入IoC管理
@Bean
@ConfigurationProperties(prefix = "otherdata.address")
public Address address() {
return new Address();
}
}
2. Environment:获取环境配置
- 环境配置:1. 正在使用的配置文件; 2. 操作系统的环境变量; 3. 操作系统的版本等
java
@Autowired
private Environment environment;
@Test
void getEnvironment(){
// 直接使用这个环境对象,来获取环境信息,配置信息等。
String[] activeProfiles = environment.getActiveProfiles();
for (String activeProfile : activeProfiles) {
System.out.println(activeProfile);
}
// 操作系统信息
System.out.println(environment.getProperty("os.name")); //Windows 11
// 操作系统版本信息
System.out.println(environment.getProperty("os.version")); // 10.0
// 操作系统架构信息
System.out.println(environment.getProperty("os.arch")); // amd64
// 获取临时目录
System.out.println(environment.getProperty("java.io.tmpdir")); // C:\Users\10539\AppData\Local\Temp\
// 系统变量
System.out.println(environment.getProperty("path"));
}
3. Aop
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
4. Mybatis配置
1. mapper相关
yml
# application.properties
# mapper.xml文件所在的目录
mybatis.mapper-locations=classpath:mapper/*.xml
# Bean类的别名,可将全限定类名省略为类名,在xml配置文件的resultType中使用
mybatis.type-aliases-package=org.example.learn.bean
# 数据库中下划线的列名与Bean中驼峰写法的映射
mybatis.configuration.map-underscore-to-camel-case=true
# application.yml
mybatis:
mapper-locations: classpath*:mapper/*.xml
type-aliases-package: org.example.pojo
configuration:
map-underscore-to-camel-case: true
2. 配置文件中配置数据源
yml
# springboot推荐的连接池:HikariDataSource
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/batis
spring.datasource.username=root
spring.datasource.password=123456
# application.yml
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/batis
username: root
password: 123456
3. mapper接口文件引入的两个方法:
- 给每个mapper接口添加注解:
@Mapper
- 在springboot的入口程序添加注解以扫描包的方式添加mapper:
@MapperScan("org.example.mapper")
5. 控制台logo设置
- 关闭logo
yml
spring.main.banner-mode=off
- 使用自定义logo
创建文件src/main/resources/banner.txt
,展示文件中的图标