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修改配置后不用重启项目就可以看到配置已修改了
