SpringCloud读取自定义配置文件

本文介绍如何在Spring Boot项目中通过SpringApplicationBuilder指定配置文件路径,并演示了如何读取配置文件中的变量值,还展示了如何根据不同环境设置不同的配置。

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

1、使用springApplicationBuilder指定;
配置文件放到resource目录下

@SpringBootApplication
public class HelloWorldApplication {
    public static void main(String[] args) {
        new SpringApplicationBuilder(HelloWorldApplication.class).properties("spring.config.location=classpath:/abc.yml").run(args);
    }
}

2、读取配置文件中变量

配置文件定义变量值

server:
  port: 8088
config:
    name: cc
@Value("${config.name}")
String name;
@GetMapping("/helloworld")
public String helloWorld() {
    return "hello"+name;
}

3、设置不同环境变量

server:
  port: 8088
spring:
  profiles: linux
config:
    name: cc
---
spring:
  profiles: windows
config:
  name: dd
@SpringBootApplication
public class HelloWorldApplication {
    public static void main(String[] args) {
        new SpringApplicationBuilder(HelloWorldApplication.class).properties("spring.config.location=classpath:/abc.yml","spring.profiles.active=windows").run(args);
    }
}
### 如何在 Spring Cloud 中读取 JSON 文件 为了实现从 Nacos 配置中心读取 JSON 格式的限流规则并应用到 Sentinel 组件中,可以在 `application.yml` 或者特定环境下的配置文件(如 `application-dev.yml`)里指定相应的数据源设置[^1]。 #### 定义Nacos 数据源配置 ```yaml spring: cloud: sentinel: datasource: ds1: # 自定义的数据源名称 nacos: server-addr: localhost:8848 # Nacos服务器地址 data-id: ${spring.application.name}-flow-rules.json # 对应于Nacos上的dataId,通常为${yourAppName}-${ruleType}.json形式 group-id: DEFAULT_GROUP # 默认分组ID rule-type: flow # 流控规则类型 file-extension: json # 文件扩展名 ``` 上述 YAML 片段展示了如何通过 Nacos 来加载名为 `${spring.application.name}-flow-rules.json` 的 JSON 文件作为流量控制规则的一部分。这允许动态调整应用程序的行为而无需重新部署代码。 对于具体的 Java 实现部分,在引入必要的依赖之后,可以通过如下方式初始化: #### 添加 Maven 依赖项 确保 pom.xml 包含以下依赖关系以便能够访问所需的功能模块: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-config-spring-boot-starter</artifactId> </dependency> ``` #### 创建控制器类用于测试目的 下面是一个简单的 REST 控制器例子,它会尝试获取来自 Nacos 的 JSON 并将其返回给客户端。 ```java @RestController public class JsonController { @Value("${custom.config.key}") private String customConfig; @GetMapping("/getConfig") public ResponseEntity<String> getConfig() { return new ResponseEntity<>(this.customConfig, HttpStatus.OK); } } ``` 这里假设已经在 Nacos 上创建了一个键值对条目 (`custom.config.key`) ,其值是从远程存储下来的 JSON 文本字符串。当向 `/getConfig` 发送 GET 请求时,该方法将会响应所请求的内容[^3]。 另外值得注意的是,如果想要更灵活地处理复杂的对象结构而不是简单地传递原始字符串,则可能需要借助 Jackson 库来进行序列化/反序列化的操作。此时可以考虑将属性映射成 POJO 类型的对象而非纯文本字段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值