SpringCloudAlibaba 动态读取配置文件的信息

发布于:2024-05-20 ⋅ 阅读:(165) ⋅ 点赞:(0)

传统读取方式:

在application.properties中写入要读取的内容,如下:

coupon.user.name=Tom
coupon.user.age=27

接口引入处:

    @Value("${coupon.user.name}")
    private String name;

    @Value("${coupon.user.age}")
    private Integer age;

该方式存在弊端是当配置文件改了,需要重新打包发布,比较繁琐。

nacos配置方式:

1.引入依赖:

    <!--        服务注册/发现-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>

    <!--        配置中心来做配置管理-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>

2.启动类加上服务注册和发现注解@EnableDiscoveryClient

3.需动态读取信息的接口加上注解@RefreshScope可实时检测nacos配置文件的变化;

@RefreshScope
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
    @Autowired
    private CouponService couponService;

    @Value("${coupon.user.name}")
    private String name;

    @Value("${coupon.user.age}")
    private Integer age;

    @GetMapping("/testConfig")
    public  R testConfig(){
        return  R.ok().put("name",name).put("age",age);
    }

}

4.在本地新建一个bootstrap.propeties文件,该文件会优先读取,里边配置nacos地址和服务名

spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

5.在nacos配置中心新建一个当前应用名的配置文件,跟上面声明的应用名保持一致,gulimall-coupon.properties,把本地application.properties里的内容复制过去,修改后,调用接口,发现已实时更新了。

PS:如果配置中心nacos config和项目配置文件配置相同节点,优先读取nacos config里边的配置内容。


网站公告

今日签到

点亮在社区的每一天
去签到