Spring Boot 的相关知识点(一)

本文深入解析SpringBoot中@value和@ConfigurationProperties的区别,@PropertySource与@ImportResource的使用,配置文件占位符及Profile的灵活应用,助您掌握SpringBoot配置的精髓。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 @value 和 @ConfigurationProperties 的区别
@ConfigurationProperties@Value
功能批量注入配置文件中的属性一个个指定
松散绑定(一种松散语法)支持不支持
SpEL(一种计算形式)不支持支持
JSR303 数据校验(@Validated)支持不支持
复杂类型封装支持不支持

在用 @ConfigurationProperties 时,配置文件不论是 yml 还是 properties 都可以获取到值。

总的来说:

如果说,我们只是在某个业务逻辑中需要获取配置文件中的某一项值,用 @value 注解。

如果说,我们专门编写了一个 javaBean 来和配置文件进行映射时,用 @ConfigurationProperties 注解。

2 @PropertySource & @ImportResource

@PropertySource:加载指定的配置文件。

@ImportResource:导入 Spring 的配置文件,让配置文件里面的内容生效。

Spring Boot 里面没有 Spring 的配置文件,我们自己编写的配置文件,Spring Boot 也无法自动识别。

若想让 Spring 的配置文件生效,则需要将 @ImportResource 注解标注在配置类上,可如下:

@ImportResource(location = {"classpath: beans.xml"})
@SpringBootApplication
public class SpringBootConfigApplication{
    ...
}

**PS:**Spring Boot 不推荐使用配置文件的方式来注入 Bean,用 @Bean 注解来给容器中添加组件。

3 配置文件的占位符

随机数:

${random.value}    ${random.int}    ${random.long}
${random.int(10)}    ${random.int[1024, 65536]}

占位符获取之前配置的值,如果没有则可以使用:来指定默认值

person.last-name = 张三 ${random.uuid}
person.age = ${random.int}
person.dog.name = $(person.hello:hello)_dog
4 Profile

Profile 是 Spring 对不同环境提供不同配置功能的支持,可以通过激活、指定参数等方式快速切换环境。

1、多 Profile 文件的方式:

我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml。

此时可以在 application.properties 文件中设置属性 spring.profiles.active 来激活。

spring.profiles.active=dev

2、yml 支持多文档块的方式:

在application.properties 文件中:

server: 
   port: 8081
spring: 
   profiles: 
      active: dev # 指定所要激活的环境
---
server: 
   port: 8082
spring: 
   profiles: dev # 指定属于哪个环境
---
server: 
   port: 8083
spring: 
   profiles: prod # 指定属于哪个环境

虽然写起来方便,但相对于多文件的方式,这种写法的可读性较差

3、激活指定 profile:

1、在配置文件中指定 spring.profiles.active=dev

2、命令行参数 --spring.profiles.active=dev

3、虚拟机参数 -Dspring.profiles.active=dev

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值