記事のディレクトリ
1. SpringCloudとは何ですか?
springbootに基づくマイクロサービスエコシステム。springcloudでは、すべてのサービスがモジュール化されているため、開発者は、構成管理、サービスの登録と検出、ヒューズメカニズム、インテリジェントルーティング、グローバルロック、分散タスク、クラスター構築などの分散システムを迅速に構築できます。 。
SpringCloudが解決する主な問題は4つあります。
- クライアントはどのようにサービスにアクセスしますか
- サービスとサービスを接続する方法
- サービスの登録と管理
- サービスがクラッシュしました。対処方法
次に、これら4つの問題に対応する解決策があり、3つの主要な解決策があります。
- SpringCloudNetflixはワンストップソリューションを提供します
- ダボ、サービスコミュニケーションに焦点を当て、動物園の飼育係はサービスの登録と発見を提供します
- springcloudAlibabaもワンストップソリューションを提供します。それはゆっくりと始まり、将来的にはより多くの企業がそれを使用するでしょう。
なじみのないように聞こえるかもしれませんが、それは問題ではありません。これらを明確にするために一連の記事を書きます。
したがって、今日の説明は主に単純なマイクロサービスを構築する方法についてです。サービスの利用者とサービスの登録者がいます。
次に、手順を使用します
1.環境を構築する
親プロジェクトの依存関係
<?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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lhh</groupId>
<artifactId>springcloud</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
</modules>
<!-- 父工程改为pom -->
<packaging>pom</packaging>
<properties>
<junit.version>4.12</junit.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- springcloud -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR8</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- springboot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
springcloud-apiモジュールの作成springcloud-api
モジュールのインポート依存関係
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
2.springcloud-provider-emp-8001
構造
pom.xml
<!--引入实体类模块-->
<dependency>
<groupId>com.lhh</groupId>
<artifactId>springcloud-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
application.yaml構成ファイル
server:
port: 8001
mybatis:
type-aliases-package: com.lhh.entity
mapper-locations: classpath:mappers/*.xml
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
spring:
application:
name: springcloud-provider-emp
datasource:
driver-class-name: com.cj.mysql.jdbc.Driver
# url: jdbc:mysql://localhost:3306/db01
url: jdbc:mysql://localhost:3306/springcloud?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
username: root
# password: root
password: 123456
#数据源类别
type: com.alibaba.druid.pool.DruidDataSource
Empmapper.xmlマッピングファイル
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lhh.springcloudprovideremp8001.dao.EmpMapper">
<select id="queryById" parameterType="Integer" resultType="Emp">
select *
from t_emp
where emp_id = #{empId}
</select>
<select id="selectAllEmps" resultType="Emp">
select *
from t_emp
</select>
</mapper>
クラスを開始
package com.lhh.springcloudprovideremp8001;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.lhh.springcloudprovideremp8001.dao")
public class SpringcloudProviderEmp8001Application {
public static void main(String[] args) {
SpringApplication.run(SpringcloudProviderEmp8001Application.class, args);
}
}
2.springcloud-consumer-emp-8001
<!-- 引入实体类+web -->
<dependency>
<groupId>com.lhh</groupId>
<artifactId>springcloud-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
yaml設定ファイル
server:
port: 80
コンシューマーコントローラー
package com.lhh.springcloudconsumer.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.List;
@RestController
@RequestMapping("/consumer")
public class EmpConsumerController {
//提供者的ip+端口
private static final String REST_URL_PREFIX = "http://localhost:8001";
@Autowired
private RestTemplate restTemplate;
@GetMapping("/get/{empId}")
public com.lhh.entity.Emp get(@PathVariable("empId") Integer empId) {
return restTemplate.getForObject(REST_URL_PREFIX + "/provider/queryOne/" + empId, com.lhh.entity.Emp.class);
}
@GetMapping("/getAll")
public List<com.lhh.entity.Emp> get() {
return restTemplate.getForObject(REST_URL_PREFIX + "/provider/queryAll/", List.class);
}
}
消費者スタートアップクラス
package com.lhh.springcloudconsumer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringcloudConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudConsumerApplication.class, args);
}
}
総括する
おめでとうございます、私は少し知っています!
あなたが知っているほど、あなたは知らないのです!
〜読んでくれてありがとう、あなたの注意とコメント、それは私の研究のための最大のサポートです、さあ、見知らぬ人、一緒に一生懸命働いてください。