入門搭建一個簡單的springcloud


搭建父工程

創建新的項目,這里我習慣先創建一個空的項目

 

 命名這個項目和工程存放的路徑

 

 然后點ok會彈出這個窗口, 然后點擊new Module

  選擇maven,然后不用勾選任何東西,直接next

 

 填寫完畢后直接next

  然后點擊finish

 

 點擊ok即可

 

 

 這樣父工程就被我們創建出來了,然后我們刪除一些不用的文件夾。

  然后我們導入父工程的相關依賴

 1 <packaging>pom</packaging>
 2 
 3     <parent>
 4         <groupId>org.springframework.boot</groupId>
 5         <artifactId>spring-boot-starter-parent</artifactId>
 6         <version>2.1.3.RELEASE</version>
 7         <relativePath/>
 8     </parent>
 9 
10     <properties>
11         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
12         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
13         <java.version>1.8</java.version>
14         <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
15         <mapper.starter.version>2.1.5</mapper.starter.version>
16         <mysql.version>5.1.47</mysql.version>
17         <pageHelper.starter.version>1.2.10</pageHelper.starter.version>
18         <mapper.version>1.1.5</mapper.version>
19     </properties>
20 
21     <dependencyManagement>
22         <dependencies>
23             <!-- springCloud -->
24             <dependency>
25                 <groupId>org.springframework.cloud</groupId>
26                 <artifactId>spring-cloud-dependencies</artifactId>
27                 <version>${spring-cloud.version}</version>
28                 <type>pom</type>
29                 <scope>import</scope>
30             </dependency>
31             <!-- 通用Mapper啟動器 -->
32             <dependency>
33                 <groupId>tk.mybatis</groupId>
34                 <artifactId>mapper-spring-boot-starter</artifactId>
35                 <version>${mapper.starter.version}</version>
36             </dependency>
37             <!-- 分頁助手啟動器 -->
38             <dependency>
39                 <groupId>com.github.pagehelper</groupId>
40                 <artifactId>pagehelper-spring-boot-starter</artifactId>
41                 <version>${pageHelper.starter.version}</version>
42             </dependency>
43             <!-- mysql驅動 -->
44             <dependency>
45                 <groupId>mysql</groupId>
46                 <artifactId>mysql-connector-java</artifactId>
47                 <version>${mysql.version}</version>
48             </dependency>
49         </dependencies>
50     </dependencyManagement>
51 
52     <dependencies>
53         <dependency>
54             <groupId>org.apache.commons</groupId>
55             <artifactId>commons-lang3</artifactId>
56             <version>3.4</version>
57         </dependency>
58         <dependency>
59             <groupId>org.projectlombok</groupId>
60             <artifactId>lombok</artifactId>
61         </dependency>
62     </dependencies>

搭建eureka在父工程下新建一個模塊

 

 選擇maven直接next

 填寫完后next

 

 注意:改路徑

 

 如下:然后點擊finish

 

 然后引入eureka的依賴

 1  <!--引入eureka組件依賴-->
 2 <dependencies>  3 <dependency>  4 <groupId>org.springframework.cloud</groupId>  5 <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>  6 </dependency>  7 </dependencies>  8  9 <build> 10 <plugins> 11 <plugin> 12 <groupId>org.springframework.boot</groupId> 13 <artifactId>spring-boot-maven-plugin</artifactId> 14 </plugin> 15 </plugins> 16 </build>

創建eureka啟動類

 

 在resource目錄下創建application.yml配置文件,這里我們配置的是單實例的eureka

 

#springcloud中Eureka注冊中心的端口號
server:
  port: 10086
#服務的名稱
spring:
  application:
    name: eureka
eureka:
  client:
    fetch-registry: false #true的時候Eureka client在啟動時會從Eureka server獲取注冊信息並緩存到本地,之后只會增量獲取信息 false則是每次全量獲取
    register-with-eureka: false #是否開啟相互注冊
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka/ #eureka的url
  instance:
    prefer-ip-address: true

啟動測試

搭建網關zuul在父工程下新建模塊

和新建eureka步驟一樣

 

 

 引入網關相關依賴

 1 <dependencies>
 2         <dependency>
 3             <groupId>org.springframework.cloud</groupId>
 4             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
 5         </dependency>
 6         <dependency>
 7             <groupId>org.springframework.cloud</groupId>
 8             <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
 9         </dependency>
10         <dependency>
11             <groupId>org.springframework.boot</groupId>
12             <artifactId>spring-boot-configuration-processor</artifactId>
13         </dependency>
14     </dependencies>
15     <build>
16         <plugins>
17             <plugin>
18                 <groupId>org.springframework.boot</groupId>
19                 <artifactId>spring-boot-maven-plugin</artifactId>
20             </plugin>
21         </plugins>
22     </build>

創建網關的啟動類

 

 

 創建網關的配置文件

 

 

 

 1 server:
 2   port: 10010 #開啟的端口
 3 spring:
 4   application:
 5     name: gateway  #服務的名稱
 6 eureka:
 7   client:
 8     service-url:
 9       defaultZone: http://127.0.0.1:10086/eureka/ #注冊到eureka的地址
10     registry-fetch-interval-seconds: 5  #eureka client間隔5s去拉取服務注冊信息
11 zuul:
12   prefix: /api # 添加路由前綴
13 
14   sensitive-headers: #忽略請求頭設置為null
15   host:
16     connect-timeout-millis: 15000
17     socket-timeout-millis: 60000

啟動測試

創建通用類在父工程下新建module

 

 

 引入依賴

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.8</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
        </dependency>

        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
        </dependency>

        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-base</artifactId>
            <version>${mapper.version}</version>
        </dependency>
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-core</artifactId>
            <version>${mapper.version}</version>
        </dependency>
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-extra</artifactId>
            <version>${mapper.version}</version>
        </dependency>

        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-api</artifactId>
            <version>0.10.5</version>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-impl</artifactId>
            <version>0.10.5</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-jackson</artifactId>
            <version>0.10.5</version>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

通用mapper

 

 

 

1 @tk.mybatis.mapper.annotation.RegisterMapper
2 public interface CommonMapper<T,Number> extends Mapper<T>,IdListMapper<T,Number>,InsertListMapper<T> {
3 }

通用返回

 

 

 

 1 public class RestfulResult {
 2  
 3     private String result = "Success";
 4     private String message;
 5     private Object data;        // 返回數據
 6     private int cntPage;        // page數
 7     private long cntData;        // 返回數據總數
 8     
 9     public String getResult() {
10         return result;
11     }
12     public void setResult(String result) {
13         this.result = result;
14     }
15     public String getMessage() {
16         return message;
17     }
18     public void setMessage(String message) {
19         this.message = message;
20     }
21     public Object getData() {
22         return data;
23     }
24     public void setData(Object data) {
25         this.data = data;
26     }
27     public int getCntPage() {
28         return cntPage;
29     }
30     public void setCntPage(int cntPage) {
31         this.cntPage = cntPage;
32     }
33     public long getCntData() {
34         return cntData;
35     }
36     public void setCntData(long cntData) {
37         this.cntData = cntData;
38     }
39 }

創建用戶微服務在父工程下新建module

 

 

 引入依賴

 1     <dependencies>
 2         <!--web啟動器-->
 3         <dependency>
 4             <groupId>org.springframework.boot</groupId>
 5             <artifactId>spring-boot-starter-web</artifactId>
 6         </dependency>
 7         <!--eureka客戶端-->
 8         <dependency>
 9             <groupId>org.springframework.cloud</groupId>
10             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
11         </dependency>
12         <!--通用mapper-->
13         <dependency>
14             <groupId>tk.mybatis</groupId>
15             <artifactId>mapper-spring-boot-starter</artifactId>
16         </dependency>
17         <!--數據庫驅動-->
18         <dependency>
19             <groupId>mysql</groupId>
20             <artifactId>mysql-connector-java</artifactId>
21         </dependency>
22         <!--實體類-->
23         <!--單元測試-->
24         <dependency>
25             <groupId>org.springframework.boot</groupId>
26             <artifactId>spring-boot-starter-test</artifactId>
27         </dependency>
28         <!--分頁助手-->
29         <dependency>
30             <groupId>com.github.pagehelper</groupId>
31             <artifactId>pagehelper-spring-boot-starter</artifactId>
32         </dependency>
33 
34         <dependency>
35             <groupId>com.jia</groupId>
36             <artifactId>common</artifactId>
37             <version>1.0-SNAPSHOT</version>
38         </dependency>
39         
40         </dependencies>
41         <build>
42             <plugins>
43                 <plugin>
44                     <groupId>org.springframework.boot</groupId>
45                     <artifactId>spring-boot-maven-plugin</artifactId>
46                 </plugin>
47             </plugins>
48         </build>

  創建用戶微服務啟動類

 

 

 新建實體對象

1 @Data
2 @NoArgsConstructor
3 @Table(name = "student")
4 public class Student {
5     @NonNull
6     private String id;
7     private String name;
8     private String age;
9 }

新建mapper(存放自定義mapper)

1 public interface StudentMapper<T> extends Mapper<Student>{
2 }

新建service

 1 @Service
 2 public class StudentService {
 3 
 4     @Autowired
 5     private StudentMapper studentMapper;
 6 
 7     public List<Student> queryStudent(Student student){
 8         List list = studentMapper.select(student);
 9         return list;
10     }
11 
12 }

新建controller

 1 @RestController
 2 @RequestMapping("/hello")
 3 public class StudentController {
 4 
 5     @Autowired
 6     private StudentService studentService;
 7 
 8     @RequestMapping("/student")
 9     public RestfulResult queryStudent(@RequestBody Student student){
10         RestfulResult result = new RestfulResult();
11         result.setMessage("1");
12         result.setData(studentService.queryStudent(student));
13         return result;
14     }
15 }

配置yml文件

 1 server:
 2   port: 8086
 3 spring:
 4   application:
 5     name: student-service
 6   datasource:
 7     driver-class-name: com.mysql.jdbc.Driver
 8     url: jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&useSSL=false
 9     username: root
10     password: 12345678
11 mybatis:
12   mapper-locations: mappers/*.xml
13   configuration:
14     map-underscore-to-camel-case: true  #駝峰命名映射
15   type-aliases-package: com.jia.pojo
16 mapper:
17   wrap-keyword: "`{0}`" #通用mapper關鍵字處理
18 eureka:
19   client:
20     service-url:
21       defaultZone: http://localhost:10086/eureka
22     registry-fetch-interval-seconds: 5
23   instance:
24     prefer-ip-address: true
25     ip-address: 127.0.0.1

resource下新建mapper.xml用來存放自定義的mapperxml

 

 

啟動測試

新建Feign微服務在父工程下新建module

 

 

 引入依賴

 1 <dependencies>
 2         <!--web啟動器-->
 3         <dependency>
 4             <groupId>org.springframework.boot</groupId>
 5             <artifactId>spring-boot-starter-web</artifactId>
 6         </dependency>
 7         <!--eureka客戶端-->
 8         <dependency>
 9             <groupId>org.springframework.cloud</groupId>
10             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
11         </dependency>
12         <!--通用mapper-->
13         <dependency>
14             <groupId>tk.mybatis</groupId>
15             <artifactId>mapper-spring-boot-starter</artifactId>
16         </dependency>
17         <!--數據庫驅動-->
18         <dependency>
19             <groupId>mysql</groupId>
20             <artifactId>mysql-connector-java</artifactId>
21         </dependency>
22         <!--實體類-->
23         <!--單元測試-->
24         <dependency>
25             <groupId>org.springframework.boot</groupId>
26             <artifactId>spring-boot-starter-test</artifactId>
27         </dependency>
28         <!--分頁助手-->
29         <dependency>
30             <groupId>com.github.pagehelper</groupId>
31             <artifactId>pagehelper-spring-boot-starter</artifactId>
32         </dependency>
33 
34         <dependency>
35             <groupId>com.jia</groupId>
36             <artifactId>common</artifactId>
37             <version>1.0-SNAPSHOT</version>
38         </dependency>
39 
40         <!--添加feign-->
41        <dependency>
42             <groupId>org.springframework.cloud</groupId>
43             <artifactId>spring-cloud-starter-openfeign</artifactId>
44         </dependency>
45 
46         <!--<dependency>
47             <groupId>org.springframework.cloud</groupId>
48             <artifactId>spring-cloud-openfeign-core</artifactId>
49         </dependency>-->
50 
51         <dependency>
52             <groupId>org.springframework.cloud</groupId>
53             <artifactId>spring-cloud-starter-hystrix</artifactId>
54             <version>1.4.7.RELEASE</version>
55         </dependency>
56 
57         <dependency>
58             <groupId>org.springframework.boot</groupId>
59             <artifactId>spring-boot-starter-actuator</artifactId>
60         </dependency>
61 
62         <dependency>
63             <groupId>com.netflix.hystrix</groupId>
64             <artifactId>hystrix-javanica</artifactId>
65             <version>RELEASE</version>
66         </dependency>
67 
68     </dependencies>
69     <build>
70         <plugins>
71             <plugin>
72                 <groupId>org.springframework.boot</groupId>
73                 <artifactId>spring-boot-maven-plugin</artifactId>
74             </plugin>
75         </plugins>
76     </build>

新建feign啟動類

 

 

 新建pojo

 

 

 新建client

 

 

 serviceFeignClient

1 @Component
2 @FeignClient(name= "student-service",fallback = ServiceFallback.class)
3 public interface ServiceFeignClient {
4     @RequestMapping(value = "/hello/student",method = RequestMethod.POST)
5     RestfulResult queryStudent(@RequestBody Student student);
6 }

serviceFallback

1 @Component
2 public class ServiceFallback implements ServiceFeignClient {
3     @Override
4     public RestfulResult queryStudent(Student student) {
5         RestfulResult result = new RestfulResult();
6         result.setData("服務調用失敗");
7         return result;
8     }
9 }

新建controller,注入feignServiceClient

 1 @RestController
 2 @RequestMapping("/hi")
 3 public class StudentController {
 4 
 5     @Autowired
 6     private ServiceFeignClient serviceFeignClient;
 7 
 8     @RequestMapping("/student")
 9     public RestfulResult queryStudent(@RequestBody Student student){
10         return  serviceFeignClient.queryStudent(student);
11     }
12 
13 }

yml配置文件

 1 server:
 2   port: 8087
 3 spring:
 4   application:
 5     name: feign-service
 6   datasource:
 7     driver-class-name: com.mysql.jdbc.Driver
 8     url: jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&useSSL=false
 9     username: root
10     password: 12345678
11 mybatis:
12   mapper-locations: mappers/*.xml
13   configuration:
14     map-underscore-to-camel-case: true  #駝峰命名映射
15   type-aliases-package: com.jia.pojo
16 mapper:
17   wrap-keyword: "`{0}`" #通用mapper關鍵字處理
18 eureka:
19   client:
20     service-url:
21       defaultZone: http://localhost:10086/eureka
22     registry-fetch-interval-seconds: 5
23   instance:
24     prefer-ip-address: true
25     ip-address: 127.0.0.1
26 feign:
27   hystrix:
28     enabled: true

pojo

@Data
@NoArgsConstructor
@Table(name = "student")
public class Student {
    @NonNull
    private String id;
    private String name;
    private String age;
}

 

復制一份用戶微服務,修改下配置端口,啟動

啟動feign測試


免責聲明!

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



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