单体Springboot集成nacos 服务注册不上 配置不加载问题

一、运行环境

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 + '\'' +
                '}';
    }
}

三、补充信息

待补充

你可能感兴趣的:(SpringBoot,spring,boot,java,spring)