Java教程

springboot整合nacos

本文主要是介绍springboot整合nacos,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

这段时间一直在工作和学习,感觉技术更新换代实在是太快了,只要不跟进学习,很快就会被时代淘汰,当然这段时间也抽空参加了几场面试,虽然不算是大厂,但也算是中等厂商了,面试的技术点和我两年前的面试技术点早已经是完全不同了,所以建议最近想要换工作的小伙伴,千万不要裸辞,同时也要提前看一些面试题,积累一些经验后在出去试试。

话不多说,接下来进入本文正题,因为当前所负责的项目接触到了阿里的nacos,对于这款阿里开源的,既能当注册中心,又能当配置中心的组件,很感兴趣,因此就自己动手,搭建了一个简单的springboot项目整合nacos的工程,在没有做之前,我特意上网百度了一番,发现步骤清晰,操作简单,十来分钟就能搞定的那种,但是当我真正自己动手的时候,才发现里面的坑也不少,整合了一个下午的时间才全部搞定,这里就记录一下,也给没有接触过的小伙伴一个完整的介绍。

第一步:首先你得有一个springboot项目,同时也要事先安装好nacos,安装步骤非常简单,从github上下载下来后,直接打开运行即可,可谓是开箱即用,这点做的非常棒,体验感很好,值得我们这些写代码的学习。

第二步:这里就进入到了一个小坑中了,关于nacos,其官方文档中有两个不同版本的整合方法,第一个是整合springboot,第二个是整合springcloud,这二者所依赖的jar包也是不一样的,因此要确定好自己的项目究竟是一个springboot的单体架构,还是一个springcloud的微服务架构。

  1、当使用springboot版本的jar包时,使用nacos作为配置中心的时候,除了bootstrap配置文件里的必要配置外,还需要在启动类上增加一个注解@NacosPropertySource,

@SpringBootApplication
@NacosPropertySource(dataId = "example", autoRefreshed = true)
public class DemoConfigApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoConfigApplication.class, args);
    }
}

这个注解主要有两个参数,一个是dataId,主要是服务在nacos的命名空间中配置的dataId,另一个参数autoRefreshed主要是设置是否实时更新配置用的;当使用nacos作为注册中心的时候,除了bootstrap配置文件里的必要配置外,还需要自己手动去写一个方法,将该服务注册到naocs中,这个方法必须在服务启动时就进行调用,一般为了方便可以直接写在springboot项目的启动类中。完成了以上两步,springboot版本的整合nacos算是大功告成了。

    @NacosInjected
    private NamingService namingService;

    @RequestMapping(value = "/get", method = GET)
    @ResponseBody
    public List<Instance> get(@RequestParam String serviceName) throws NacosException {
        return namingService.getAllInstances(serviceName);
    }

springboot版本的整合nacos配置jar包:

<!-- nacos作为配置中心 -->
<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-config-spring-boot-starter</artifactId>
</dependency>

<!-- nacos作为注册中心 -->
<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-discovery-spring-boot-starter</artifactId>
</dependency>

 

  2、当使用springcloud版本的jar包时,使用nacos作为配置中心的时候,配置完bootstarp文件内的信息后,就没有必要在springboot的启动类上增加什么注解了,如果需要nacos配置项能够实时更新这一功能,那么只需要在使用到nacos配置的java文件上增加一个注解即可@RefreshScope;

@RefreshScope
public class DemoController{

}

当使用nacos作为注册中心的时候,除了bootstrap配置文件里的必要配置外,只需要在springboot的启动类上增加一个注解即可@EnableDiscoveryClient。完成了以上两步,springcloud版本的整合nacos算是大功告成了。

@SpringBootApplication
@EnableDiscoveryClient
public class NacosProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosProviderApplication.class, args);
    }

}

springcloud版本的整合nacos配置jar包:

<!-- nacos配置中心 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

<!-- nacos注册中心 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-commons</artifactId>
</dependency>

bootstrap.properties配置文件中的配置内容:

#项目名称
spring.application.name=demo

#######################配置中心配置#################################
# 配置中心的地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# 配置的分组名称
spring.cloud.nacos.config.group=dev

第三步:这里就进入了一个大坑中,也就是因为这个坑,所以我才浪费了那么长的时间,那就是springboot的版本于nacos版本之间的冲突问题,这点尤其需要注意,因为一旦没有注意这一点,项目启动时就会报各种各样奇奇怪怪的错误,一开始我用了最新版的springboot和最新版的nacos版本,结果后来发现nacos版本的更新速度低于springboot版本,因此最新版的nacos版本无法适配最新版的springboot版本,最后只能降低springboot版本,这才让项目顺利的跑起来。

最后把我搭建的这个简单demo的地址发出来,欢迎大家多多评价和点赞,谢谢大伙。

项目地址:https://github.com/hyqlb/bin.git

这篇关于springboot整合nacos的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!