写点什么

Docker 下 Nacos 配置应用开发,java 初级程序员面试

作者:Java高工P7
  • 2021 年 11 月 09 日
  • 本文字数:2034 字

    阅读完需:约 7 分钟

  1. 基于 maven 创建名为 nacosdemo 的 springboot 应用,pom.xml 内容如下:


<?xml version="1.0" encoding="UTF-8"?>


<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">


<parent>


<artifactId>nacosdemo</artifactId>


<groupId>com.bolingcavalry</groupId>


<version>1.0-SNAPSHOT</version>


</parent>


<modelVersion>4.0.0</modelVersion>


<artifactId>configdemo</artifactId>


<name>configdemo</name>


<description>Demo project for Spring Boot</description>


<properties>


<java.version>1.8</java.version>


</properties>


<dependencies>


<dependency>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-starter-web</artifactId>


</dependency>


<dependency>


<groupId>org.springframework.cloud</groupId>


<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>


</dependency>


</dependencies>


<build>


<plugins>


<plugin>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-maven-plugin</artifactId>


</plugin>


<plugin>


<groupId>com.google.cloud.tools</groupId>


<artifactId>jib-maven-plugin</artifactId>


<version>1.3.0</version>


<configuration>


<from>


<image>openjdk:8u201-jdk-alpine3.9</image>


</from>


<to>


<!--镜像名称和 tag,使用了 mvn 内置变量{project.version}-->


<image>bolingcavalry/nacos{project.version}</image>


</to>


<container>


<jvmFlags>


<jvmFlag>-Xms1g</jvmFlag>


<jvmFlag>-Xmx1g</jvmFlag>


</jvmFlags>


<ports>


<port>8080</port>


</ports>


<useCurrentTimestamp>true</useCurrentTimestamp>


</container>


</configuration>


</plugin>


</plugins>


</build>


</project>


上述 pom.xml 文件有两点要注意:


a. 添加依赖 spring-cloud-starter-alibaba-nacos-config;


b. 为了生成 docker 镜像,使用 jib 插件;


  1. 在 src\main\resources 这个目录下,将原有的 application.properties 或者 application.yml 都删除干净,只保留一个名为 bootstrap.properites 的文件,内容如下所示:


#应用名


spring.application.name=config-demo


#nacos 配置中心的地址和端口,"nacos"是 docker-compose.yml 中的 nacos 容器名


spring.cloud.nacos.config.server-addr=nacos:8848


#配置的分组


spring.cloud.nacos.config.grou


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


p=BOLING_CAVALRY


#对应配置文件的 ID,如果没有这个配置,就按照应用名称"config-demo"去 nacos 上寻找


spring.cloud.nacos.config.prefix=my-nacos-config


#配置文件的扩展名,这里使用 yaml


spring.cloud.nacos.config.file-extension=yaml


  1. 创建启动类 ConfigdemoApplication.java,增加一个注解 EnableDiscoveryClient:


package com.bolingcavalry.configdemo;


import org.springframework.boot.SpringApplication;


import org.springframework.boot.autoconfigure.SpringBootApplication;


import org.springframework.cloud.client.discovery.EnableDiscoveryClient;


@SpringBootApplication


@EnableDiscoveryClient


public class ConfigdemoApplication {


public static void main(String[] args) {


SpringApplication.run(ConfigdemoApplication.class, args);


}


}


  1. 创建一个 Controller 类 ConfigController.java,用于提供一个 http 服务,返回的内容来自配置信息,如果能使用 Nacos 提供的配置服务,这里返回的应该是在 Nacos 上配置的内容:


package com.bolingcavalry.configdemo.controller;


import org.springframework.beans.factory.annotation.Value;


import org.springframework.cloud.context.config.annotation.RefreshScope;


import org.springframework.web.bind.annotation.RequestMapping;


import org.springframework.web.bind.annotation.RestController;


import java.text.SimpleDateFormat;


import java.util.Date;


/**


  • @Description: 提供 web 服务的 controller

  • @author: willzhao E-mail: zq2599@gmail.com

  • @date: 2019/08/18 18:23


*/


@RestController


@RefreshScope


public class ConfigController {


@Value("${bolingcavalry.desc:desc from code}")


private String desc;


@RequestMapping("/test")


public String test(){


return desc + new SimpleDateFormat(" [yyyy-mm-dd HH:mm:ss]").format(new Date());


}


}


上述代码有两处需要注意:


a. RefreshScope 注解用于声明配置信息变化后立即同步至此;


b. desc 变量的值来自 @Value 注解,如果无法从 Nacos 取得"bolingcavalry.desc"对应的值,desc 的值就是默认的"desc from code";


  1. 以上就是 configdemo 的所有源码了,在 pom.xml 所在目录执行以下命令,即可构建 docker 镜像,存入本地仓库:


mvn compile jib:dockerBuild

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
Docker下Nacos配置应用开发,java初级程序员面试