SpringCloud接入Nacos作为「注册中心」和「配置中心」

Nacos 支持基于DNS和基于RPC的服务发现,可以作为注册中心、配置中心(动态配置)、动态DNS服务。

官方网址、下载地址、启动步骤

安装

1.1 下载完成之后,解压nacos-server-1.3.1.zip

SpringCloud接入Nacos作为「注册中心」和「配置中心」_第1张图片

1.2 单机启动执行bin目录脚本startup.cmd -m standalone

SpringCloud接入Nacos作为「注册中心」和「配置中心」_第2张图片
访问http://localhost:8848/,默认账户密码都是nacos,至此注册中心就起来了~~
SpringCloud接入Nacos作为「注册中心」和「配置中心」_第3张图片

创建客户端

搭建maven工程,引入nacos依赖,加依赖,写配置,写注解

项目「michael-spica-nacos」

POM文件


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>

    <groupId>michael.spica.nacosgroupId>
    <artifactId>michael-spica-nacosartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <packaging>jarpackaging>
    <name>michael-spica-nacosname>
    <description>Demo project for Spring Bootdescription>

    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.3.1.RELEASEversion>
        <relativePath/> 
    parent>

    <properties>
        <java.version>1.8java.version>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
        <skipTests>trueskipTests> 
    properties>

    <dependencyManagement>
        <dependencies>
            
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-dependenciesartifactId>
                <version>Hoxton.SR5version>
                <type>pomtype>
                <scope>importscope>
            dependency>
            
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-alibaba-dependenciesartifactId>
                <version>0.9.0.RELEASEversion>
                <type>pomtype>
                <scope>importscope>
            dependency>
        dependencies>
    dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starterartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-openfeignartifactId>
        dependency>

        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <optional>trueoptional>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintagegroupId>
                    <artifactId>junit-vintage-engineartifactId>
                exclusion>
            exclusions>
        dependency>
    dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>
project>

配置文件:
bootstrap.yml

spring:
  application:
    name: michael-spica-nacos
  cloud:
    # Nacos相关配置
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 # 注册中心服务地址
        register-enabled: true # 默认开启自动注册
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yml # 配置文件后缀名
        group: DEFAULT_GROUP # 默认 DEFAULT_GROUP
        encode: UTF-8 # 默认 UTF-8
        enabled: true
  profiles:
    active: dev # dev|qa|pre|prod

application.yml

server:
  port: 8070

启动类:

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class MichaelSpicaNacosApplication {
     

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

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
     
        return new RestTemplate();
    }
}
@FeignClient(value = "michael-spica-nacos-provider")
public interface NacosProviderClient {
     

    @GetMapping("/api/test")
    String test();
}
@RestController
@RequestMapping("/api/config")
@RefreshScope // 开启配置文件动态刷新
public class ConfigController {
     

    @Value("${username:123}")
    private String username;

    @GetMapping(path = "/test")
    public String test() {
     
        return String.format("username value: %s", username);
    }
}
@RestController
@RequestMapping("/api/test")
public class TestController {
     

    @Autowired
    private NacosProviderClient client;

    @GetMapping
    public String test() {
     
        return "Hello, SpringCloud alibaba, I'm coming.";
    }

    @GetMapping("/client")
    public String testClient() {
     
        return "@FeignClient:" + client.test();
    }
}

项目「michael-spica-nacos-provider」

POM文件


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>

    <groupId>michael.spica.nacos.providergroupId>
    <artifactId>michael-spica-nacos-providerartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <name>michael-spica-nacos-providername>
    <description>Demo project for Spring Bootdescription>

    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.3.1.RELEASEversion>
        <relativePath/> 
    parent>

    <properties>
        <java.version>1.8java.version>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
        <skipTests>trueskipTests> 
    properties>

    <dependencyManagement>
        <dependencies>
            
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-dependenciesartifactId>
                <version>Hoxton.SR5version>
                <type>pomtype>
                <scope>importscope>
            dependency>
            
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-alibaba-dependenciesartifactId>
                <version>0.9.0.RELEASEversion>
                <type>pomtype>
                <scope>importscope>
            dependency>
        dependencies>
    dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starterartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
        dependency>

        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <optional>trueoptional>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintagegroupId>
                    <artifactId>junit-vintage-engineartifactId>
                exclusion>
            exclusions>
        dependency>
    dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>
project>

配置文件:
bootstrap.yml

spring:
  application:
    name: michael-spica-nacos-provider
  cloud:
    # Nacos相关配置
    nacos:
      discovery:
        register-enabled: true # 默认开启自动注册
        server-addr: 127.0.0.1:8848 # 注册中心服务地址
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yml # 配置文件后缀名
        group: DEFAULT_GROUP # 默认 DEFAULT_GROUP
        encode: UTF-8 # 默认 UTF-8
        enabled: true
  profiles:
    active: dev # dev|qa|pre|prod

application.yml

server:
  port: 8071

启动类:

@SpringBootApplication
@EnableDiscoveryClient
public class MichaelSpicaNacosProviderApplication {
     

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

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
     
        return new RestTemplate();
    }
}
@RestController
@RequestMapping("/api/config")
@RefreshScope // 开启配置文件动态刷新
public class ConfigController {
     

    @Value("${username:123}")
    private String username;

    @GetMapping(path = "/username")
    public String get() {
     
        return String.format("username value: %s", username);
    }
}
@RestController
@RequestMapping("/api/test")
public class TestController {
     

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping
    public String test() {
     
        return "Hello, test3.";
    }

    @GetMapping("/restTemplate")
    public String testRestTemplate() {
     
        return restTemplate.getForObject("http://michael-spica-nacos/api/test", String.class);
    }
}

你可能感兴趣的:(SpringCloud,spring)