一、细粒度的自动配置
Spring有两种不同的(但相关)的配置:
- bean装配:声明在spring应用上下文中创建哪些组件以及它们之间如何互相注入的配置。
- 属性配置:设置Spring应用上下文中bean的值的配置
Spring环境拉取的属性源来源:
- JVM系统属性
- 操作系统环境变量
- 命令行参数
- 应用属性配置文件 :application.properties or application.yml
spring环境会将这些属性聚合到一个源中,通过这个源可以注入到Spring的bean中
1.1 配置数据源
SpringBoot会根据JDBC 数据库URL自动计算数据源驱动类类型,但是我们可以手动配置驱动类类型。
javaspring.datasource.driver-class-name
1.2 数据库初始化脚本
有些时候我们需要对数据库的数据进行初始化,我们可以通过
spring.datasource.schema:
- xxx.sql
- xxx.sql
-data:
- xxx.sql
1.3 配置日志
修改日志级别、指定日志写入到那个文件中、针对springsecurity的日志级别
logging.file:..
logging.level.root:WARN
logging.org:springframework.security:DEBUG
日志文件一旦达到10MB,就会轮换
1.4 自定义属性值
我们可以在application.properties文件中进行自定义属性值的配置。我们也可以通过${}来对其他配置属性值的引用。
二、使用自己的配置属性
使用springboot提供的
@ConfigurationProperties注解进行属性注入。
@ConfigurationProperties(prefix="...") //prefix的值为自定义配置属性的前缀
public x{
private String configName; // 具体配置属性名,springboot在自动配置过程中,会从spring环境中的属性源中获取并注入到该成员变量中。
}
@ConfigurationProperties通常会被放到一种特定类型的bean中,这种bean的目的就是持有配置数据。
这样的话,特定的配置细节就能从控制器和其他应用程序类中抽离出来多个bean也能更容易的共享一些通用的配置。
eg:
@Component // 定义是一个Springbean
@Data
@ConfigurationProperties(prefix="xxx")
public class OrderPropes{
private int pageSize = 20;
}
其他类若想使用里面的配置属性,通过构造器注入或者@Autowire、@RequireConstruction注入都可以。