国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Nacos使用(下):SpringBoot和SpringCloud項目中使用Nacos

這篇具有很好參考價值的文章主要介紹了Nacos使用(下):SpringBoot和SpringCloud項目中使用Nacos。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Nacos使用(上):Nacos安裝
Nacos使用(中):Java項目和Spring項目使用Nacos
Nacos使用(下):SpringBoot和SpringCloud項目中使用Nacos

3.3 SpringBoot SDK

父工程指定springboot版本:

<dependencyManagement>
  <dependencies>
	<dependency>
  	  <groupId>org.springframework.boot</groupId>
  	  <artifactId>spring-boot-dependencies</artifactId>
  	  <version>2.4.2</version>
  	  <type>pom</type>
  	  <scope>import</scope>
	</dependency>
  </dependencies>
</dependencyManagement>

導入jar包

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--配置中心-->
<dependency>
  <groupId>com.alibaba.boot</groupId>
  <artifactId>nacos-config-spring-boot-starter</artifactId>
  <version>0.2.12</version>
</dependency>
<!--服務治理-->
<dependency>
  <groupId>com.alibaba.boot</groupId>
  <artifactId>nacos-discovery-spring-boot-starter</artifactId>
  <version>0.2.12</version>
</dependency>

配置文件application.properties

spring.application.name=boot-test
server.port=8080
#配置中心
nacos.config.server-addr=127.0.0.1:8848
nacos.config.username=nacos
nacos.config.password=nacos
nacos.config.namespace=dev
#注冊中心
nacos.discovery.server-addr=127.0.0.1:8848
nacos.discovery.username=nacos
nacos.discovery.password=nacos
nacos.discovery.namespace=dev

啟動類

package com.test.nacos;

import com.alibaba.nacos.api.annotation.NacosProperties;
import com.alibaba.nacos.spring.context.annotation.EnableNacos;
import com.alibaba.nacos.spring.context.annotation.config.EnableNacosConfig;
import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import com.alibaba.nacos.spring.context.annotation.discovery.EnableNacosDiscovery;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.PropertySource;

/**
 * @author 專治八阿哥的孟老師
 */
@SpringBootApplication
// 讀取配置中心配置文件
@NacosPropertySource(dataId = "example.properties", autoRefreshed = true)
// 啟動服務治理
@EnableNacosDiscovery
public class BootTestStarter {
    public static void main(String[] args) {
        SpringApplication.run(BootTestStarter.class, args);
    }
}

Nacos上創(chuàng)建一個配置文件

Nacos使用(下):SpringBoot和SpringCloud項目中使用Nacos,java技術,spring boot,spring cloud,java,Nacos

屬性可以直接通過@NacosValue讀取,也可以映射到一個配置類中

配置類:

package com.test.nacos;

import com.alibaba.nacos.api.config.annotation.NacosConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @author 專治八阿哥的孟老師
 */
@Component
@NacosConfigurationProperties(prefix = "test", dataId = "example.properties", autoRefreshed = true)
public class TestConfiguration {
    private String config;

    public String getConfig() {
        return config;
    }

    public void setConfig(String config) {
        this.config = config;
    }
}

測試類

package com.test.nacos;

import javax.annotation.PostConstruct;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import com.alibaba.nacos.api.annotation.NacosInjected;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.config.annotation.NacosValue;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;

/**
 * @author 專治八阿哥的孟老師
 */
@Component
public class TestBean {

    @NacosInjected
    private ConfigService configService;
    // 服務名稱
    @Value("${spring.application.name}")
    private String applicationName;
    // 服務的端口號
    @Value("${server.port}")
    private Integer port;
    // 遠程配置,直接讀取屬性
    @NacosValue(value = "${test.config}", autoRefreshed = true)
    private String config;
    @Autowired
    private TestConfiguration testConfiguration;

    @NacosInjected
    private NamingService namingService;

    @PostConstruct
    public void register() throws NacosException {
        // 測試服務注冊
        namingService.registerInstance(applicationName, "127.0.0.1", port);
    }

    @PostConstruct
    public void init() {
        try {
            System.out.println(configService.getConfig("example.properties", "DEFAULT_GROUP", 5000));
            System.out.println(config);
            System.out.println(testConfiguration.getConfig());
        } catch (NacosException e) {
            throw new RuntimeException(e);
        }
    }
}

3.4 SpringCloud

父工程指定:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-dependencies</artifactId>
      <version>2020.0.1</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>2.4.2</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-alibaba-dependencies</artifactId>
      <version>2021.1</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

3.4.1 配置中心

在 Nacos Spring Cloud 中,dataId 的完整格式如下,其中**${prefix}**默認是spring.application.name,可以通過配置

${prefix}-${spring.profiles.active}.${file-extension}

Nacos Spring Cloud默認使用的是bootstrap.properties文件

spring.application.name=consumer

spring.profiles.active = dev

不同環(huán)境使用不同配置文件,bootstrap-dev.properties內容為如下

server.port=8080

spring.cloud.nacos.config.server-addr=http://localhost:8848
spring.cloud.nacos.config.namespace=${spring.profiles.active}
spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.username=nacos
spring.cloud.nacos.config.password=nacos

在Nacos上添加配置文件,文件的dataId要與當前項目的application-name對應

Nacos使用(下):SpringBoot和SpringCloud項目中使用Nacos,java技術,spring boot,spring cloud,java,Nacos

spring.datasource.url = jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&serverTimezone=GMT%2B8
spring.datasource.username =root
spring.datasource.password =
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver

測試類

package com.test.consumer;

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;

/**
 * @author 專治八阿哥的孟老師
 */
@RestController
@RefreshScope // 自動刷新
public class TestController {
    //從nacos讀取
    @Value("${spring.datasource.url}")
    private String url;

    @RequestMapping("test")
    public String test() { //訪問接口可以看讀取出的配置
        return url;
    }
}

啟動類

package com.test.consumer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author 專治八阿哥的孟老師
 */
@SpringBootApplication
public class ConsumerStarter {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerStarter.class, args);
    }
}

3.4.2 服務治理-Feign

常用的服務有Feign和Dubbo兩種,我們寫兩種類型的提供者,注意此處配置與版本有關,舊版本需要在啟動類上加@EnableDiscoveryClient

http服務的提供者不需要特殊配置,寫一個普通的controller接口

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

啟動類

package com.test.nacos;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author 專治八阿哥的孟老師
 */
@SpringBootApplication
public class HttpProviderStarter {
    public static void main(String[] args) {
        SpringApplication.run(HttpProviderStarter.class, args);
    }
}
package com.test.nacos.controller;

import java.util.HashMap;
import java.util.Map;

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

/**
 * @author 專治八阿哥的孟老師
 */
@RestController
public class TestController {

    @RequestMapping("/test")
    public Map test() {
        Map map = new HashMap();
        map.put("name", "張三");
        map.put("id", 123);
        return map;
    }
}

bootstrap.properties

spring.application.name=provider-http
spring.profiles.active = dev

server.port=8081

spring.cloud.nacos.discovery.server-addr=http://localhost:8848
spring.cloud.nacos.discovery.namespace=${spring.profiles.active}
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos

消費者

<!--服務治理-->
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--調用feign-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

bootstrap.properties

spring.cloud.nacos.discovery.server-addr=http://localhost:8848
spring.cloud.nacos.discovery.namespace=${spring.profiles.active}
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos

#只做消費者,不被其他服務發(fā)現(xiàn)
spring.cloud.nacos.discovery.register-enabled=false

啟動類上添加@EnableFeignClients注解

Nacos使用(下):SpringBoot和SpringCloud項目中使用Nacos,java技術,spring boot,spring cloud,java,Nacos

調用Feign服務,詳見SpringCloud

package com.test.consumer.service;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.util.Map;

/**
 * @author 專治八阿哥的孟老師
 */
@FeignClient(value = "provider-http")
public interface TestFeignService {
    @RequestMapping(value = "/test", method = RequestMethod.GET)
    Map test();
}

需要用到服務的地方注入service即可

@Autowired
private TestFeignService testFeignService;

@RequestMapping("feign")
public Map feign() {
    return testFeignService.test();
}

3.4.3 服務治理-Dubbo

Dubbo服務通常需要把暴露的接口和實體單獨提取出來,封裝成jar,服務提供者實現(xiàn)jar里的接口,消費者通過jar調用遠程服務

Nacos使用(下):SpringBoot和SpringCloud項目中使用Nacos,java技術,spring boot,spring cloud,java,Nacos

dubbo-service,注意實體類一定要實現(xiàn)Serializable接口,否則調用過程中會報通信失敗

package com.test.nacos.entity;

import java.io.Serializable;

/**
 * @author 專治八阿哥的孟老師
 */
public class User implements Serializable {
    private Integer id;
    private String name;

   //getter/setter略
}
package com.test.nacos.service;

import com.test.nacos.entity.User;

public interface TestDubboService {

    User getUser(Integer id);
}

dubbo-provider

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
  </dependency>
  <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  </dependency>
  <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-dubbo</artifactId>
  </dependency>
  <!--不同版本不一樣-->
  <dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>jsr311-api</artifactId>
    <version>1.1.1</version>
  </dependency>
  <!--定義接口的包-->
  <dependency>
    <groupId>com.test.nacos</groupId>
    <artifactId>dubbo-service</artifactId>
    <version>1.0-SNAPSHOT</version>
  </dependency>
</dependencies>

bootstrap.properties

spring.application.name=provider-dubbo
spring.profiles.active = dev

server.port=8082

spring.cloud.nacos.discovery.server-addr=http://localhost:8848
spring.cloud.nacos.discovery.namespace=${spring.profiles.active}
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos

dubbo.application.name=${spring.application.name}
# dubbo掃描包路徑
dubbo.scan.base-packages=com.test.nacos.service
# dubbo協(xié)議
dubbo.protocol.name=dubbo
# 隨機端口
dubbo.protocol.port=-1
# nacos地址
dubbo.registry.address=spring-cloud://localhost:8848
dubbo.registry.username=nacos
dubbo.registry.password=nacos

接口實現(xiàn)類

package com.test.nacos.service.impl;

import com.test.nacos.entity.User;
import com.test.nacos.service.TestDubboService;
import org.apache.dubbo.config.annotation.DubboService;

/**
 * @author 專治八阿哥的孟老師
 */
@DubboService // dubbo注解
public class TestDubboServiceImpl implements TestDubboService {
    @Override
    public User getUser(Integer id) {
        User user = new User();
        user.setId(id);
        user.setName("test");
        return user;
    }
}

啟動類

package com.test.nacos;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author 專治八阿哥的孟老師
 */
@SpringBootApplication
public class DubboTestStarter {
    public static void main(String[] args) {
        SpringApplication.run(DubboTestStarter.class, args);
    }
}

消費者追加jar包

<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
<dependency>
  <groupId>javax.ws.rs</groupId>
  <artifactId>jsr311-api</artifactId>
  <version>1.1.1</version>
</dependency>
<dependency>
  <groupId>com.test.nacos</groupId>
  <artifactId>dubbo-service</artifactId>
  <version>1.0-SNAPSHOT</version>
</dependency>
dubbo.registry.protocol=dubbo
dubbo.registry.address=spring-cloud://localhost:8848
# dubbo 協(xié)議
dubbo.protocol.id=dubbo
dubbo.protocol.name=dubbo
# dubbo 協(xié)議端口( -1 表示自增端口,從 20880 開始)
dubbo.protocol.port=-1
# Dubbo 消費端訂閱服務端的應用名,多個服務提供者用逗號分隔
dubbo.cloud.subscribed-services=provider-dubbo

需要引入的時候,通過 @DubboReference引入服務文章來源地址http://www.zghlxwxcb.cn/news/detail-685707.html

    @DubboReference
    private TestDubboService testDubboService;

    @RequestMapping("dubbo")
    public User dubbo() {
        return testDubboService.getUser(1);
    }

到了這里,關于Nacos使用(下):SpringBoot和SpringCloud項目中使用Nacos的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【Java項目】SpringCloud項目注冊到Nacos中心時顯示的是內網(wǎng)IP導致不同服務器之間無法互相調用接口的解決并發(fā)

    【Java項目】SpringCloud項目注冊到Nacos中心時顯示的是內網(wǎng)IP導致不同服務器之間無法互相調用接口的解決并發(fā)

    微服務項目地址—動動你發(fā)財?shù)男∈贮c一個stars吧 出現(xiàn)這個問題是之前我也就遇到過的,這個問題的情況就是: 我們知道微服務項目是可以把不同的項目部署在不同的服務器上從而減少某一臺服務器的壓力,我們只需要為每一個服務配置一個注冊中心即可,然后一個服務需要

    2024年02月16日
    瀏覽(30)
  • SpringCloud Alibaba(一)微服務簡介+Nacos的安裝部署與使用+Nacos集成springboot實現(xiàn)服務注冊+Feign實現(xiàn)服務之間的遠程調用+負載均衡+領域劃分

    SpringCloud Alibaba(一)微服務簡介+Nacos的安裝部署與使用+Nacos集成springboot實現(xiàn)服務注冊+Feign實現(xiàn)服務之間的遠程調用+負載均衡+領域劃分

    目錄 一.認識微服務 1.0.學習目標 1.1.單體架構 單體架構的優(yōu)缺點如下: 1.2.分布式架構 分布式架構的優(yōu)缺點: 1.3.微服務 微服務的架構特征: 1.4.SpringCloud 1.5Nacos注冊中心 1.6.總結 二、Nacos基本使用安裝部署+服務注冊 (一)linux安裝包方式單節(jié)點安裝部署 1. jdk安裝配置 2. na

    2024年02月09日
    瀏覽(29)
  • java 入門Spring,SpringBoot,SpringCloud等技術全棧教程網(wǎng)站導航

    java 入門Spring,SpringBoot,SpringCloud等技術全棧教程網(wǎng)站導航

    我們整理了Java的全棧技術路線的各個精品網(wǎng)站,從最簡單的基礎語法,到核心JVM,到企業(yè)級開發(fā)Spring以及通信技術Netty等開發(fā),每個網(wǎng)站都有對應的免費的精品教程。我們全部收錄到 java 技術全棧學習導航 http://?www.webhub123.com/#/home/detail?projectHashid=59183272ownerUserid=22053727 整理

    2023年04月20日
    瀏覽(51)
  • springcloud/springboot集成NACOS 做注冊和配置中心以及nacos源碼分析

    springcloud/springboot集成NACOS 做注冊和配置中心以及nacos源碼分析

    Spring Cloud 是一系列框架的有序集合如服務發(fā)現(xiàn)注冊、配置中心、消息總線、負載均衡、熔斷器、數(shù)據(jù)監(jiān)控等。 SpringCloud 將多個服務框架組合起來,通過Spring Boot進行再封裝,屏蔽掉了復雜的配置和實現(xiàn)原理,最終給開發(fā)者提供了一套簡單易懂、易部署和易維護的分布式系統(tǒng)開

    2024年02月08日
    瀏覽(97)
  • 微服務(SpringBoot、SpringCloud、SpringCloud Alibaba、Nacos、JDK)之間的版本對應依賴關系(附Nacos高速下載地址)

    微服務(SpringBoot、SpringCloud、SpringCloud Alibaba、Nacos、JDK)之間的版本對應依賴關系(附Nacos高速下載地址)

    前言 本文主要整理與介紹在搭建微服務項目時,核心組件之間的版本對應關系,避免版本依賴沖突帶來的一系列問題,同時也方便后續(xù)升級與查看。 這里先放上我目前搭建的較新的微服務腳手架版本,如下(springboot3.0開始不支持jdk8) Spring Boot Spring Cloud Spring Cloud Alibaba Noc

    2024年02月04日
    瀏覽(30)
  • springboot 項目里面使用nacos ,不需要配置nacos 的用戶名密碼嘛

    當在Spring Boot項目中使用Nacos時,如果您不需要配置Nacos的用戶名和密碼,可以將username和password屬性留空或不配置。這樣,Nacos客戶端將以匿名方式連接到Nacos服務器。 在bootstrap.yml或application.yml中配置Nacos的用戶名和密碼時,您可以將其留空或不填寫: 通過將username和password屬

    2024年02月14日
    瀏覽(16)
  • springBoot配置文件賬號密碼加密存儲(springCloud nacos)

    springBoot配置文件賬號密碼加密存儲(springCloud nacos)

    ????????最近公司有要求,項目中的配置文件不允許明文存儲,全部要改為密文,收集了一些資料,在這里做下記錄總結。 在Application啟動主類中加入啟動注解 @EnableEncryptableProperties 注:加密因子password配置在配置文件中也會涉及到安全問題,更安全的做法是:將其作為系

    2024年02月16日
    瀏覽(27)
  • 分布式微服務技術棧-SpringCloud<Eureka,Ribbon,nacos>

    分布式微服務技術棧-SpringCloud<Eureka,Ribbon,nacos>

    分布式架構的一種 把服務進行 拆分 springcloud 解決了 服務拆分過程中的 治理問題 與單體應用 進行區(qū)分 (單體架構 把業(yè)務所有功能集中開發(fā),打成一個包部署) 每個模塊獨立開發(fā)和部署(服務集群) 服務之間互相調用 出現(xiàn)分布式技術 Webservice ESB Hession Dubbo 異步通信 消息隊

    2024年02月07日
    瀏覽(22)
  • SpringCloud-SpringBoot讀取Nacos上的配置文件

    SpringCloud-SpringBoot讀取Nacos上的配置文件

    在 Spring Boot 應用程序中,可以使用 Spring Cloud Nacos 來實現(xiàn)從 Nacos 服務注冊中心和配置中心讀取配置信息。以下是如何在 Spring Boot 中讀取 Nacos 上的配置文件的步驟: 1. 引入依賴 首先,在 Spring Boot 項目的 pom.xml 文件中添加 Spring Cloud Nacos 的依賴: 2. 配置 Nacos 連接信息 將 Nac

    2024年04月17日
    瀏覽(18)
  • SpringCloud學習筆記(九)_使用Java類加載SpringBoot、SpringCloud配置文件

    我們都知道平常在使用SpringBoot和SpringCloud的時候,如果需要加載一兩個配置文件的話我們通常使用@Value(“${屬性名稱}”)注解去加載。但是如果配置文件屬性特別多的時候使用這種方式就顯得特別的不友好了。 比如說,我們要加載下方這個名為application.yml的配置文件。 | —

    2024年02月11日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包