spring boot nacos注册微服务示例demo_亲测成功

news2024/10/7 6:45:44

spring boot nacos注册微服务示例demo_亲测成功

先安装好Nacos

Nacos安装使用

创建Maven项目

结构如图

在这里插入图片描述

例如项目名为: test-demo
下面有个子模块: test-demo-data-process

父模块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>test-demo</artifactId>
        <groupId>com.beyond.demo</groupId>
        <version>0.1</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <description>demo数据服务</description>
    <artifactId>test-demo-data-process</artifactId>
    <packaging>pom</packaging>

    <modules>
        <module>test-demo-data-process-server</module>
    </modules>
</project>
子模块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>test-demo-data-process</artifactId>
        <groupId>com.beyond.demo</groupId>
        <version>0.1</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>test-demo-data-process-server</artifactId>

    <dependencies>
        <!-- javax.servlet -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!-- 增加feign-httpclient,使用连接池机制 -->
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-httpclient</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>


    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <finalName>${project.artifactId}-${project.version}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
application.yml
server:
  port: 8080

management:
  endpoints:
    web:
      exposure:
        include: "*"
        exclude:
  endpoint:
    health:
      show-details: always

banner.txt

springboot项目启动时,控制台会打印自带的banner

  
//                          _ooOoo_                               //  
//                         o8888888o                              //  
//                         88" . "88                              //  
//                         (| ^_^ |)                              //  
//                         O\  =  /O                              //  
//                      ____/`---'\____                           //  
//                    .'  \\|     |//  `.                         //  
//                   /  \\|||  :  |||//  \                        //  
//                  /  _||||| -:- |||||-  \                       //  
//                  |   | \\\  -  /// |   |                       //  
//                  | \_|  ''\---/''  |   |                       //  
//                  \  .-\__  `-`  ___/-. /                       //  
//                ___`. .'  /--.--\  `. . ___                     //  
//              ."" '<  `.___\_<|>_/___.'  >'"".                  //  
//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //  
//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //  
//      ========`-.____`-.___\_____/___.-`____.-'========         //  
//                           `=---='                              //  
//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //  
//            佛祖保佑       永不宕机      永无BUG                  //
 
Application Version: ${application.version}${application.formatted-version}
Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version}
bootstrap.yaml

注意: namespace和nacos上对应

在这里插入图片描述

spring:
  # 选择加载不同环境的配置文件
  profiles:
    active: dev
  application:
    name: test-demo-data-process-server

---
#开发环境配置
spring:
  profiles: dev,local
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.3.1:8848
        namespace: xxxx-8ef1-4393-xxxx-xxxxx
      config:
        server-addr: 192.168.3.1:8848
        namespace: xxxx-8ef1-4393-xxxx-xxxxx
        active-profiles: ${spring.profiles.active:dev}
        fileExtension: yml
        shared-dataids: cloud.yml,rabbitmq-mqtt.yml
        refreshable-dataids: cloud.yml,rabbitmq-mqtt.yml

---
##公司环境配置
spring:
  profiles: comp
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.1.18:8848
        namespace: xxxxx-8ef1-xxxx-b28f-xxxxx
      config:
        server-addr: 192.168.1.18:8848
        namespace: xxxxx-8ef1-xxxx-b28f-xxxxx
        active-profiles: ${spring.profiles.active:comp}
        fileExtension: yml
        shared-dataids: cloud.yml,rabbitmq-mqtt.yml
        refreshable-dataids: cloud.yml,rabbitmq-mqtt.yml

---
##生产环境配置
spring:
  profiles: prod
  cloud:
    nacos:
      discovery:
        server-addr: ${NACOS_HOST:10.10.70.89}:${NACOS_PORT:8848}
        namespace: ${NAMESPACE:559d7cb0-xxx-xxx-xxxx-41843b0106ae}
      config:
        server-addr: ${NACOS_HOST:10.10.70.89}:${NACOS_PORT:8848}
        namespace: ${NAMESPACE:559d7cb0-xxx-xxx-xxxx-41843b0106ae}
        active-profiles: ${spring.profiles.active:prod}
        fileExtension: yml
        shared-dataids: cloud.yml,rabbitmq-mqtt.yml
        refreshable-dataids: cloud.yml,rabbitmq-mqtt.yml



logback-spring.xml

logback日志配置

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="false" scanPeriod="60000" debug="false">
	<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
	<springProperty scope="context" name="springAppName" source="spring.application.name"/>
    <property name="GLOBAL-LOG-LEVEL" value="ERROR" /> <!-- TRACE < DEBUG < INFO < WARN < ERROR -->
    <property name="GLOBAL-LOG-PATH" value="log/" />  <!-- 日志输出路径变量 -->
    <property name="GLOBAL-LOG-MODULE" value="${springAppName}" /> <!-- 日志文件命名变量,一般以模块名命名 -->

<!-- You can override this to have a custom pattern -->
<property name="CONSOLE_LOG_PATTERN"
	value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <!-- Minimum logging level to be presented in the console logs-->
            <level>DEBUG</level>
        </filter>
        <encoder>
	        <pattern>${CONSOLE_LOG_PATTERN}</pattern>
	        <charset>utf8</charset>
        </encoder>
    </appender>

    <appender name="ROLLING-FILE-1" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${GLOBAL-LOG-PATH}/${GLOBAL-LOG-MODULE}-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
	   <pattern>${CONSOLE_LOG_PATTERN}</pattern>
	   <charset>utf8</charset>

        </encoder>
    </appender>

    <!-- 异步输出 -->
    <appender name ="ASYNC" class= "ch.qos.logback.classic.AsyncAppender">
        <!-- 不丢失日志.默认的,如果队列的90%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
        <discardingThreshold>10</discardingThreshold>
        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
        <queueSize>256</queueSize>
        <!-- 添加附加的appender,最多只能添加一个 -->
        <appender-ref ref ="ROLLING-FILE-1"/>
    </appender>

    <!-- Appender to log to file in a JSON format
    <appender name="logstash" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_FILE}.json</file>;
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${GLOBAL-LOG-PATH}/${GLOBAL-LOG-MODULE}.json.%d{yyyy-MM-dd}.gz</fileNamePattern>
            <maxHistory>7</maxHistory>
        </rollingPolicy>

          <encoder>
       <pattern>${CONSOLE_LOG_PATTERN}</pattern>
       <charset>utf8</charset>

        </encoder>
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <timeZone>UTC</timeZone>
                </timestamp>
                <pattern>
                    <pattern>
                        {
                        "severity": "%level",
                        "service": "${springAppName:-}",
                        "trace": "%X{X-B3-TraceId:-}",
                        "span": "%X{X-B3-SpanId:-}",
                        "parent": "%X{X-B3-ParentSpanId:-}",
                        "exportable": "%X{X-Span-Export:-}",
                        "pid": "${PID:-}",
                        "thread": "%thread",
                        "class": "%logger{40}",
                        "rest": "%message"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>
    </appender>
    -->
    <!-- 日志级别最好每个logger节点都设置,不要引用传递root节点的日志级别,有利于性能 -->
    <springProfile name="dev,comp">
        <logger name="com.beyond" level="INFO"/>
        <logger name="com.alibaba.nacos" level="ERROR"/>
        <root level="${GLOBAL-LOG-LEVEL}">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="ASYNC"/>
        </root>
    </springProfile>

    <springProfile name="test,prod">
        <logger name="com.beyond" level="ERROR"/>
        <logger name="com.alibaba.nacos" level="ERROR"/>
        <root level="${GLOBAL-LOG-LEVEL}">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="ASYNC"/>
        </root>
    </springProfile>
</configuration>

DataApp.java

启动类

package com.beyond.demo.data;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.ApplicationPidFileWriter;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;


@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
@EnableScheduling
public class DataApp
{
	public static void main(String[] args)
	{
		final SpringApplication sa = new SpringApplication(DataApp.class);
		sa.addListeners(new ApplicationPidFileWriter("test-data-demo-server.pid"));
		sa.run(args);
	}
}

其他包的代码不做详细介绍了,都是业务逻辑相关代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1523113.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Micropython ESP32】定时器Timer

文章目录 前言一、分频系数1.1 为什么需要分频系数1.2 分频系数怎么计算 二、如何使用定时器2.1 定时器构造函数2.2 定时器初始化2.3 关闭定时器 三、定时器示例代码总结 前言 在MicroPython中&#xff0c;ESP32微控制器提供了丰富的功能&#xff0c;其中之一是定时器&#xf…

【消息队列开发】 实现MemoryDataCenter类——管理内存数据

文章目录 &#x1f343;前言&#x1f334;数据格式的准备&#x1f332;内存操作&#x1f6a9;对于交换机&#x1f6a9;对于队列&#x1f6a9;对于绑定&#x1f6a9;对于单个消息&#x1f6a9;对于队列与消息链表&#x1f6a9;对于未确认消息&#x1f6a9;从硬盘上读取数据 ⭕总…

SpringCloud-深度理解ElasticSearch

一、Elasticsearch概述 1、Elasticsearch介绍 Elasticsearch&#xff08;简称ES&#xff09;是一个开源的分布式搜索和分析引擎&#xff0c;构建在Apache Lucene基础上。它提供了一个强大而灵活的工具&#xff0c;用于全文搜索、结构化搜索、分析以及数据可视化。ES最初设计用…

ARM和AMD介绍

一、介绍 ARM 和 AMD 都是计算机领域中的知名公司&#xff0c;它们在不同方面具有重要的影响和地位。 ARM&#xff08;Advanced RISC Machine&#xff09;&#xff1a;ARM 公司是一家总部位于英国的公司&#xff0c;专注于设计低功耗、高性能的处理器架构。ARM 架构以其精简指…

Vue前端开发记录(一)

本篇文章中的图片均为深色背景&#xff0c;请于深色模式下观看 说明&#xff1a;本篇文章的内容为vue前端的开发记录&#xff0c;作者在这方面的底蕴有限&#xff0c;所以仅作为参考 文章目录 一、安装配置nodejs,vue二、vue项目目录结构三、前期注意事项0、组件1、数不清的报…

一文速通ESP32(基于MicroPython)——含示例代码

ESP32 简介 ESP32-S3 是一款集成 2.4 GHz Wi-Fi 和 Bluetooth 5 (LE) 的 MCU 芯片&#xff0c;支持远距离模式 (Long Range)。ESP32-S3 搭载 Xtensa 32 位 LX7 双核处理器&#xff0c;主频高达 240 MHz&#xff0c;内置 512 KB SRAM (TCM)&#xff0c;具有 45 个可编程 GPIO 管…

IDEA 多个git仓库项目放一个窗口

1、多个项目先通过新建module或者CtrlAltShiftS 添加module引入 2、重点是右下角有时候git 分支视图只有一个module的Repositories。这时候需要去设置把多个git仓库添加到同一个窗口才能方便提交代码。

十五、自回归(AutoRegressive)和自编码(AutoEncoding)语言模型

参考自回归语言模型&#xff08;AR&#xff09;和自编码语言模型&#xff08;AE&#xff09; 1 自回归语言模型&#xff08; AR&#xff09; 自回归语言模型&#xff08;AR&#xff09;就是根据上文内容&#xff08;或下文内容&#xff09;预测下一个&#xff08;或前一个&…

微信小程序(五十八)分步表单多页面传值

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.分步表单传值 2.伪数据生成 源码&#xff1a; app.json {"pages": ["pages/index/index","pages/building/building","pages/room/room","pages/logs/logs&quo…

整数和浮点数在内存中是如何存储的?

1.整数在内存中的存储 首先数据在内存中都是以二进制的形式存储的&#xff0c;而整数在内存中也是以二进制的形式存储的&#xff0c;而整数的表示形式有三种&#xff0c;分别是源码&#xff0c;反码&#xff0c;补码&#xff0c;而整数在内存中是以补码的形式存放的。 三种表示…

图文并茂!在Oracle VM VirtualBox上安装Ubuntu虚拟机的详细步骤指南

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

CTFHUB-web-信息泄漏

题目所在位置&#xff1a;技能树->web->信息泄漏 目录遍历 打开题目&#xff0c;我们进入的是这个页面 翻译过来就是 得到的信息就是&#xff1a;flag要在这些目录里面寻找&#xff0c;我们直接一个一个点开查看就行 发现得到一个flag.txt&#xff0c;点击打开得到flag …

Python之requests实现github模拟登录

文章目录 github 模拟登录前言模拟登录流程抓包操作查看登录表单的内容登录操作 模拟登录操作在 main函数的调用获得 auth_token调用/session接口登录处理检测登录是否成功 总结&#xff1a; github 模拟登录 前言 前面学习了requests模块的基础学习后&#xff0c;接下来做一个…

upload-labs通关方式

pass-1 通过弹窗可推断此关卡的语言大概率为js&#xff0c;因此得出两种解决办法 方法一 浏览器禁用js 关闭后就逃出了js的验证就可以正常php文件 上传成功后打开图片链接根据你写的一句话木马执行它&#xff0c;我这里采用phpinfo&#xff08;&#xff09; 方法二 在控制台…

【高通camera hal bug分析】高通自带相机镜像问题

首先打了两个log&#xff0c;一个是开启镜像的log&#xff0c;还有一个是没有开启镜像的log&#xff0c;如果我们开启镜像以后&#xff0c;观察开启镜像log发现 , 这段代码走的没有任何问题&#xff0c;因为Flip的值等于1了。 关闭镜像log如下&#xff1a; 如果我们不开启镜像…

21 OpenCV 直方图均衡化

文章目录 直方图概念均衡的目的equalizeHist 均衡化算子示例 直方图概念 图像直方图&#xff0c;是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数&#xff0c;据此生成的直方图&#xff0c;称为图像直方图-直方图。直方图反映了图像灰度的分布情况。 均衡的目的…

自定义组件

1. 组件 ① 在项目的根目录中&#xff0c;鼠标右键&#xff0c;创建 components -> test 文件夹 ② 在新建的 components -> test 文件夹上&#xff0c;鼠标右键&#xff0c;点击“新建 Component” ③ 键入组件的名称之后回车&#xff0c;会自动生成组件对应的 4 个文件…

JAVA实战开源项目:高校学院网站(Vue+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学院院系模块2.2 竞赛报名模块2.3 教育教学模块2.4 招生就业模块2.5 实时信息模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 学院院系表3.2.2 竞赛报名表3.2.3 教育教学表3.2.4 招生就业表3.2.5 实时信息表 四、系…

USB打印机改网络打印机

解决传统SMB缺陷可跨平台设备使用。 1、安装deepin 如何安装 – 深度科技社区 2、配置IP地址 vi /etc/network/interfaces && systemctl restart networking 3、安装程序上传到服务器并解压。运行0Dinstalld目录下文件 sh 0Dinstalld/0installdd.sh http://XX.XX.XX…

设计模式在芯片验证中的应用——装饰器

一、装饰器模式 装饰器模式(Decorator)是一种结构化软件设计模式&#xff0c;它提供了一种通过向类对象添加行为来修改类对象的方法&#xff0c;而不会影响同一类的其它对象行为。该模式允许在不修改抽象类的情况下添加类功能。它从本质上允许基类代码对不可预见的修改具有前瞻…