一、运行环境
1.nacos版本2.1.0
2.springBoot版本 2.7.6
3.nacos-spring-boot-starter 0.2.12
这篇文件的目的 不是spring-cloud整合nacos 而是springboot单体应用整合nacos
spring-cloud整合nacos 按官方给的demo是没问题的
二、主要代码如下
1.maven依赖代码如下
<!-- nacos配置文件依赖 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>0.2.12</version>
</dependency>
<!-- nacos注册发现依赖 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>0.2.12</version>
</dependency>
2.配置文件代码如下
server:
port: 8081
logging:
level:
root: info
spring:
application:
name: demo
##
nacos:
discovery:
server-addr: localhost:8848
config:
server-addr: localhost:8848
3.Springboot启动类代码如下
import com.alibaba.nacos.api.annotation.NacosInjected;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import javax.annotation.PostConstruct;
//排除DataSource
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
//dataId是nacos配置文件中心里面的文件名称 autoRefreshed代码是否是自动刷新
@NacosPropertySource(dataId = "demo.yaml", autoRefreshed = true)
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
/**
* 下面的代码是项目启动时 主动去nacos里面进行服务注册
* 这里有个问题 就是我们上面已经在配置文件里面配置了
* 但是 服务就是没有在 nacos里面自动注册
* 我根据nacos官方给出的demo运行 也注册不上去
* 准确的问题 还要看一下代码 目前还没看 等看了 后续补下
*/
@Value("${spring.application.name}")
private String serviceName;
@NacosInjected
private NamingService namingService;
@PostConstruct
public void registerInstance() throws NacosException {
namingService.registerInstance(serviceName, "localhost", 8848);
}
}
4.SpringBoot读取配置文件里面的内容代码
import com.alibaba.nacos.api.config.annotation.NacosConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
/**
* 1.这里补充下 上面我们在 启动类里面 已经加上了 自动刷新的配置了 但是我在测试的时候 发现 一直无法刷新我们新加的配置
* 2.如果你的配置文件 想要实现自动刷新配置的话 必须使用 nacos那一套 获取属性的注解 比如
* @NacosConfigurationProperties
* @NacosValue()
*/
@NacosConfigurationProperties(dataId = "demo.yaml", prefix = "demo", autoRefreshed = true)
public class HelloConfig {
private String name;
private String desc;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
@Override
public String toString() {
return "HelloConfig{" +
"name='" + name + '\'' +
", desc='" + desc + '\'' +
'}';
}
}
三、补充信息
待补充