小名聽說,公司的下一個專案會用到SpringCloud,小名非常開心🎉
但是小名從來沒有接觸過,所以想著先體驗一下微服務的強大!
這篇文章是小名的SpringCloud啟航篇0.0🎊
本文僅涉及到SimpleStructure分支

一 、 創建 父模塊:
1.創建一個maven專案
(1)打開idea,File —> New project —>Maven

(2)填寫 專案名稱、坐標(groupid和artifactId)

(3) 選擇Maven倉庫地址

2. 父專案創建完成,以后的子專案都應該繼承這個專案,在pom.xml檔案添加依賴:
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.Eamon</groupId>
<artifactId>EamonVenti</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3. 啟動 父模塊
(1)將war放到Tomcat

(2) 部署本地 war 到Tomcat:

(3)啟動Tomcat

(4)驗證:網址輸入 http://localhost:8080/ 出現“Hello,World!”,啟動成功!
二 、 創建 注冊中心(Eureka服務)
1. 在父模塊下,創建新模塊作為注冊中心
(1) 如下圖,在EamonVenti上右鍵創建新模塊

(2)選擇 Spring Initializr

(3) 按下圖操作:

(4)pom中修改或添加的注冊中心的依賴
注意:子模塊依賴父模塊時,如下圖一定要一 一對應:

除了上圖以外,還要手動添加如下依賴:
<!--添加注冊中心的依賴-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
<version>1.3.0.RELEASE</version>
</dependency>
(5)創建組態檔application.yml
spring:
application:
name: eureka-server
#開啟權限認證
security:
basic:
enabled: true
user:
name: root
password: root
server:
host: localhost
port: 8081
eureka:
client:
#此專案不作為客戶端注冊
register-with-eureka: false
fetch-registry: false
service-url:
#開啟權限驗證后Eureka地址為 用戶名:密碼@地址:埠號,如未開啟權限驗證則直接使用 地址:埠號
defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@${server.host}:${server.port}/eureka
其中:
eureka:
client:
register-with-eureka: false
fetch-registry: false
意義是,禁止 eureka server 自己注冊自己
(6)啟動項中添加注解 @EnableEurekaServer
@EnableEurekaServer//添加該注解,申明此處為服務注冊中心
@SpringBootApplication
public class RegisterApplication {
public static void main(String[] args) {
SpringApplication.run(RegisterApplication.class, args);
}
}
其中:
@SpringBootApplication注解是 : SpringBoot的一個組合注解,包含@Configuration、@EnableAutoConfiguration、@ComponentScan
PS:如果開啟了權限驗證并且SpringBoot版本為2.0以上的話還需要一個操作,因為2.0默認開啟了csrf,如果我們現在直接啟動Eureka服務的話客戶端是注冊不上的,所以需要把csrf關閉
在cn.org.zhixiang包下新建security包,新建WebSecurityConfigurer類
@EnableWebSecurity
public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
super.configure(http);
}
}
2. 啟動并驗證 注冊中心 是否可用 http://localhost:8081/

3. 瀏覽器中出現如下界面,恭喜你,成功了!
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-EeShTMD3-1607244893575)(搭建專案.assets/Eureka啟動頁面.png)]](https://img.uj5u.com/2020/12/07/2018900710041313.png)
三 、 創建 生產者
1. 在父模塊下,創建新模塊作為生產者
(1) 步驟跟創建注冊中心一樣,區別在命名:producer

(2) pom中添加依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
(3) application.yml中配置相關資訊
spring:
application:
name: produce
server:
port: 8082
eurekaServer:
host: localhost
port: 8081
user: root
password: root
eureka:
client:
#將此專案注冊到Eureka服務
register-with-eureka: true
service-url: http://${eurekaServer.user}:${eurekaServer.password}@${eurekaServer.host}:${eurekaServer.port}/eureka
(4) 啟動項中 添加注解 @EnableEurekaClient,宣告自己為生產者
@SpringBootApplication
@EnableEurekaClient//宣告自己為生產者
public class ProduceApplication {
public static void main(String[] args) {
SpringApplication.run(ProduceApplication.class, args);
}
}
(5) 創建User物體類以及UserController,目錄如下圖:

User物體類:
public class User {
private long id;
private String name;
private int age;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
UserController類:
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping(value = "/getUser/{id}")
public User getUser(@PathVariable Long id){
User user=new User();
user.setId(id);
user.setName("小名");
user.setAge(2);
return user;
}
@GetMapping(value = "/getName")
public String getName(){
return "小名";
}
}
注解解釋:
- @RestController注解:@ResponseBody + @Controller
- @GetMapping:相當于@RequestMapping(value="", method = RequestMethod.GET)
- @PathVariable:可以將URL中占位符引數{xxx}系結到處理器類的方法形參中
2.啟動 producer,并輸入:
瀏覽器輸入:http://localhost:8082/user/getUser/3
或
瀏覽器輸入:http://localhost:8082/user/getName
回傳:小名
3. 重繪 注冊中心頁面,可以看到 服務已經注冊到注冊中心

四 、 創建 消費者:
1. 在父模塊下,創建新模塊作為消費者
(1)前面的步驟同生產者
(2)在pom.xml中添加依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.4.RELEASE</version>
</dependency>
<!--提供客戶端的軟體負載均衡-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
<version>1.4.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
(3)application.yml 中添加配置資訊
spring:
application:
name: consumer
server:
port: 8083
eurekaServer:
host: localhost
port: 8081
user: root
password: root
eureka:
client:
#將此專案注冊到Eureka服務
register-with-eureka: true
service-url:
defaultZone: http://${eurekaServer.user}:${eurekaServer.password}@${eurekaServer.host}:${eurekaServer.port}/eureka
(4)修改UserController:
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private RestTemplate restTemplate;
@GetMapping(value = "/getUser/{id}")
public User getUser(@PathVariable Long id){
return restTemplate.getForObject("http://produce/user/getUser/"+id,User.class);
}
@GetMapping(value = "/getName")
public String getName(){
return "小名";
}
}
(5)啟動項中 添加注解 @EnableDiscoveryClient,宣告自己為消費者
@SpringBootApplication
@EnableDiscoveryClient//宣告自己為消費者
public class ConsumerApplication {
@Bean
@LoadBalanced//開啟負載均衡
public RestTemplate restTemplate(){
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
注解解釋:
-
RestTemplate類:是一個對于HTTP請求封裝的一個類,這個就是一個封裝原生API訪問一個URL的簡化版本,
-
@Bean注解:等同于以前在xml中配置的如下代碼
<beans> <bean id="restTemplate" class="org.springframework.web.client.RestTemplate"/> </beans> -
@LoadBalanced注解:開啟Eureka的負載均衡
2. 右鍵啟動“ConsumerApplication”
瀏覽器輸入:http://localhost:8083/user/getUser/3
輸出:{“id”:3,“name”:“小名”,“age”:2}
3. 重繪 注冊中心頁面,可以看到 服務已經注冊到注冊中心

Ending😜~
本文僅涉及到SimpleStructure分支
后期小名隨著陸續地學習,會重新搭建專案框架,本文只是 “品嘗一下SpringCloud的味道~ ”現在可以肯定的是會用到公司選用的Nacos,其他的小名還在學習中,所以,敬請期待~😊
此文涉僅及到倉庫中的SimpleStructure分支,希望大家可以持續關注小名,支持一下小名,給我的文章點贊👍、評論?、收藏🤞;給我的代碼倉庫點一個小Star?,謝謝大家啦~???
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/230980.html
標籤:java
