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

经验分享 程序员 微信小程序 职场和发展