spring boot 自定义配置

Spring Boot自动配置自带了很多配置类,每一个都能运用
在你的应用程序里。它们都使用了Spring 4.0的条件化配置,可以在运行时判断这个配置是该被运用,还是该被忽略。
spring boot 自定义配置文件可以有多种途径:
1:命令行参数
2: java:comp/env里的JNDI属性
3:JVM系统属性
4: 操作系统环境变量
5: 随机生成的带random.*前缀的属性(在设置其他属性时,可以引用它们,比如${random.
long})
6:应用程序以外的application.properties或者appliaction.yml文件
7: 打包在应用程序内的application.properties或者appliaction.yml文件
8:通过@PropertySource标注的属性源
9:默认属性

这个列表按照优先级排序,也就是说,任何高优先级属性源里设置的属相都会覆盖低优先级的相同属性。例如:命令行参数会覆盖其它属性源里的属性。
application.properties 和application.yml 文件能放在以下四个位置。
(1):外置,在相对于应用程序运行目录的/config子目录中
(2):外置,在应用程序运行的目录里
(3):内置,在config包内
(4):内置,在Classpath根目录

同样,这个列表按照优先级排序。也就是说,/config子目录里的application.properties会覆盖应用程序Classpath里的application.properties中的相同属性。
此外,如果你在同一优先级位置同时有application.properties和application.yml,那么application. yml里的属性会覆盖application.properties里的属性。

### Spring Boot 自定义配置属性 #### 创建自定义配置类 为了实现自定义配置,在`application.properties`或`application.yml`文件中添加特定前缀的键值对。例如,假设要配置数据库连接池的相关参数: ```properties myapp.datasource.url=jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC myapp.datasource.username=root myapp.datasource.password=password ``` 这些配置项可以通过创建对应的Java配置类来映射并注入到应用程序中[^1]。 #### 添加配置处理器依赖 为了让IDE能够识别来自`.properties`文件中的占位符,并提供更好的开发体验(比如代码补全),可以在项目的`pom.xml`里加入如下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> ``` 此操作有助于提高编码效率以及减少错误的发生概率[^3]。 #### 编写实体类用于接收配置数据 接下来需要构建一个POJO对象用来承载上述配置信息。该类应标注`@ConfigurationProperties(prefix="myapp.datasource")`注解指定其关联的配置项前缀,并通过`@Component`将其注册为Spring容器管理下的bean实例以便后续使用。 ```java import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "myapp.datasource") public class DataSourceConfig { private String url; private String username; private String password; // Getters and Setters } ``` 当应用启动时,框架会自动读取相应的配置并将它们绑定至此类字段上[^2]。 #### 使用自定义配置 最后一步是在业务逻辑层调用已准备好的配置组件。只需简单地将目标Bean注入即可访问其中存储的各项设置值。 ```java @Service public class MyService { @Autowired private DataSourceConfig dataSourceConfig; public void printDataSourceInfo() { System.out.println("Database URL:" + dataSourceConfig.getUrl()); System.out.println("Username:" + dataSourceConfig.getUsername()); System.out.println("Password:" + dataSourceConfig.getPassword()); } } ``` 这样就完成了整个流程——从定义外部化配置直到实际运用的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值