從零搭建springcloud微服務(二)----微服務服務方cloud-provider


一、微服務服務方的搭建
1.File—>New—>Module

2.選擇Spring Initializr,選擇對應的JDK,
Choose Initializr Server URL 選擇 default。
Next。

3.輸入項目組Group:com.plkd。
組件名稱Artifact:cloud-provider。
Type:選擇Maven Project。
version:0.0.1-SNAPSHOT。
修改自動生成的Package:com.plkd.provider
修改自動生成的description:微服務服務方。
Next。

4.dependencies選擇Alibaba—>Nacos Service Discovery。
Spring Boot選擇你需要的版本,我這選擇2.2.5。
Next。

5.Project Name一般不做修改,和組件名稱Artifact一樣。
Content root、Module file location 均按自動生成,不做修改。
Finish。

 6.修改pom文件。調整成如下

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.plkd</groupId>
<artifactId>cloud-dependencies</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../cloud-dependencies</relativePath><!-- lookup parent from repository -->
</parent>
<groupId>com.plkd</groupId>
<artifactId>cloud-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>cloud-provider</name>
<description>微服務服務方</description>

<dependencies>
<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-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>
同時調整cloud-dependencies模塊的pom文件
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/> <!-- 默認值為…/pom.xml,查找順序:relativePath元素中的地址–本地倉庫–遠程倉庫 -->
</parent>
<groupId>com.plkd</groupId>
<artifactId>cloud-dependencies</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>cloud-dependencies</name>
<packaging>pom</packaging>
<description>項目依賴管理</description>

<repositories><!-- 遠程倉庫地址 -->
<repository>
<id>aliyun</id>
<name>aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
</repositories>

<properties>
<java.version>1.8</java.version>
<spring-cloud-alibaba.version>2.2.0.RELEASE</spring-cloud-alibaba.version>
</properties>

<dependencies><!-- dependencies即使在子項目中不寫該依賴項,那么子項目仍然會從父項目中繼承該依賴項(全部繼承) -->
</dependencies>

<dependencyManagement><!-- dependencyManagement里只是聲明依賴,並不實現引入,因此子項目需要顯示的聲明需要用的依賴。如果不在子項目中聲明依賴,是不會從父項目中繼承下來的;只有在子項目中寫了該依賴項,並且沒有指定具體版本,才會從父項目中繼承該項,並且version和scope都讀取自父pom;另外如果子項目中指定了版本號,那么會使用子項目中指定的jar版本。 -->
<dependencies>
<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>
</build>

</project>

7.在application.properties中配置 Nacos server的地址:
server.port=8070
spring.application.name=cloud-provider
spring.cloud.nacos.discovery.server-addr=121.36.217.132:8848

 

8.CloudProviderApplication類新增Rest方法
@RestController
class EchoController {
@RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
public String echo(@PathVariable String string) {
return "Hello Nacos Discovery " + string;
}
}

需要在cloud-provider模塊的pom文件中額外添加

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

9.通過Spring Cloud原生注解 @EnableDiscoveryClient開啟服務注冊發現功能

 

 10.啟動服務
如果提示以下類似錯誤,那是因為1.2.0版本nacos server里配置了nacos.core.auth.enabled=true(這個開關采用了熱加載模式,無需重啟Server即可生效。因此當權限控制功能使用有異常時,可以直接回滾到不鑒權的模式。)

java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance after all servers([121.36.217.132:8848]) tried: failed to req API:121.36.217.132:8848/nacos/v1/ns/instance. code:403 msg: <html><body><h1>Whitelabel Error Page</h1><p>This application has no explicit mapping for /error, so you are seeing this as a fallback.</p><div id='created'>Wed Mar 18 16:28:39 CST 2020</div><div>There was an unexpected error (type=Forbidden, status=403).</div><div>unknown user!</div></body></html>

解決方案:

在application.properties中增加配置

spring.cloud.nacos.discovery.username=nacos(實際用戶)
spring.cloud.nacos.discovery.password=nacos(實際用戶密碼)

然后重新啟動服務。

 

 登錄nacos server

 

 可以看到服務列表中存在了服務提供者。

參考文檔:
https://blog.csdn.net/csuzxm2000/article/details/86511847
https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM