SpringBoot整合nacos实现参数配置
1.nacos安装
首先,这里的版本号用的是linux的1.4.1 链接:https://pan.baidu.com/s/1z196fI1sl3t7WD2P7MV8eQ 提取码:3ute 1.新建一个数据库导入目录里的nacos-mysql.sql文件 2.放开application.properties的数据库配置 3.修改启动脚本为单机启动 startup.sh-> 把MODE改为standalone 之后启动就OK了
2.项目配置
项目里的配置主要是版本要兼容,要么启动报错,要么配置读不到 测试用的版本号如下:
<cloud.bootstrap.version>3.1.1</cloud.bootstrap.version> <alibaba.nacos.version>2021.0.1.0</alibaba.nacos.version> <!-- SpringBoot的依赖配置 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.6.2</version> <type>pom</type> <scope>import</scope> </dependency> <!-- nacos --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>${cloud.bootstrap.version}</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>${alibaba.nacos.version}</version> </dependency>
配置文件
bootstrap.yml –注意!必须要建一个这个才能读取到配置
spring: application: # 项目名称 name: demo profiles: # 配置分支 active: dev cloud: nacos: config: name: ${ spring.application.name} # nacos服务器地址 域名则用 http://xxx.com即可 server-addr: 127.0.0.1:8848 # nacos里Data Id的后缀 file-extension: yml # nacos里的分组名称 group: dev # nacos里的命名空间id namespace: b261dd3d-abe5-4646-af96-99d9a977886e # nacos服务器地址 server-addr: 127.0.0.1:8848
测试用代码: 启动类要加@EnableDiscoveryClient注解 在动态刷新的配置类加@RefreshScope注解
/** * 实体类 * @author: * @description: * @date: */ @RefreshScope @Component public class TestConfig { @Value("${test.str}") private String str; @Value("${test.int}") private Integer inte; @Value("${test.double}") private Double dou; public String getStr() { return str; } public void setStr(String str) { this.str = str; } public Integer getInte() { return inte; } public void setInte(Integer inte) { this.inte = inte; } public Double getDou() { return dou; } public void setDou(Double dou) { this.dou = dou; } }
/** * controller * @author: * @description: * @date: */ @RestController @RefreshScope public class IndexController { @Autowired private TestConfig conf; @RequestMapping("/tests") public Object test(HttpServletResponse response ) throws IOException{ //throw new RuntimeException("asdasddas"); // response.sendError(403); return "str:"+conf.getStr()+" int:"+conf.getInte()+" double:"+conf.getDou(); } }
3.nacos配置
nacos里的Data Id根据 ${spring.application.name}-${profiles.active}.${file-extension} =》demo-dev.yml 这里的b261dd3d-abe5-4646-af96-99d9a977886e就是命名空间的id
4.启动
在nacos修改配置后不用重启项目就可以看到配置已修改了