微服务之搭建springcloud项目(一)

1.新建Maven项目

File -> New -> Project -> Maven -> Next

接着填写GroupId和ArtifactId,然后点击next

填写Project name,然后点击finish

2.修改jobgo的pom.xml

增加springcloud依赖以及相关依赖

<?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.jobgo</groupId>
    <artifactId>webapp</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>jobgo-gateway</module>
        <module>jobgo-user</module>
        <module>jobgo-registry</module>
    </modules>

    <!--创建父工程-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath></relativePath>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.SR1</spring-cloud.version>
        <lombok.version>1.16.22</lombok.version>
        <mapper.starter.version>2.0.3</mapper.starter.version>
        <mysql.version>5.1.32</mysql.version>
        <pageHelper.starter.version>1.2.5</pageHelper.starter.version>
    </properties>
    <!--子项目无该依赖-->
    <dependencyManagement>
        <dependencies>
            <!--spring cloud-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
            </dependency>
            <!--mysql驱动-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <!--子项目有该依赖-->
    <dependencies>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
    </dependencies>

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

3.搭建Zuul网关

右键点击项目jobgo -> New -> Module -> Next

填写artifactId -> Next -> Finish

修改jobgo-gateway中的pom.xml

<?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">
    <parent>
        <artifactId>webapp</artifactId>
        <groupId>com.jobgo</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>jobgo-gateway</artifactId>
    <dependencies>

        <!--Zuul网关服务-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
            <version>2.0.1.RELEASE</version>
        </dependency>
        <!--Eureka-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.0.1.RELEASE</version>
        </dependency>
    </dependencies>

</project>

新建如下包、类、yml文件

修改Gateway类

package com.jobgo.gateway;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

/**
 * create: 2019-07-04 18:31
 * update: 2019-07-04 18:31
 */
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableZuulProxy
public class Gateway {
    public static void main(String[] args) {
        SpringApplication.run(Gateway.class);
    }
}

修改application.yml

server:
  port: 10010
spring:
  application:
    name: gateway
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:11001/eureka
zuul:
  # 添加路由前缀 通过http://127.0.0.1:10010/api/user-service/*访问或http://127.0.0.1:10010/api/user/*访问
  prefix: /api
  routes:
    user-service: /user/**
  # 取消cookies敏感头,让其可以进行传递
  sensitive-headers: Cookies

ribbon:
  ConnectionTimeOut: 1000 # ribbon连接超时时长
  ReadTimeOut: 3500 # ribbon读取超时时长
  MaxAutoRetries: 0 # 当前服务重试次数
  MaxAutoRetriesNextServer: 0 # 切换服务重试次数

hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 5000 # 熔断超时时长

4.搭建Eureka注册中心

新建jobgo-register子模块,右键点击项目jobgo -> New -> Module -> Next,然后填写artifactId -> Next -> Finish,同3

新建如下包、类、yml文件

修改pom.xml

<?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">
    <parent>
        <artifactId>webapp</artifactId>
        <groupId>com.jobgo</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>jobgo-registry</artifactId>

    <dependencies>
        <!--Eureka-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            <version>2.0.1.RELEASE</version>
        </dependency>
    </dependencies>

</project>

修改Registry

package com.jobgo.registry;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

/**
 * create: 2019-07-04 19:18
 * update: 2019-07-04 19:18
 */
@EnableEurekaServer // 注册中心,必须集群
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class Registry {
    public static void main(String[] args) {
        SpringApplication.run(Registry.class);
    }
}

 修改application.yml

server:
  port: 11001
spring:
  application:
    name: registry
eureka:
  client:
    service-url:
      # 默认的
      defaultZone: http://127.0.0.1:11001/eureka
    register-with-eureka: false
  instance:
    prefer-ip-address: true
    ip-address: 127.0.0.1

5.新建jobgo-user子模块

右键点击项目jobgo -> New -> Module -> Next,然后填写artifactId -> Next -> Finish,同3

右键点击jobgo-student-> New -> Module -> Next,然后填写artifactId -> Next -> Finish,同3

新建如下包、类、yml文件

修改pom.xml

<?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">
    <parent>
        <artifactId>jobgo-student</artifactId>
        <groupId>com.jobgo</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>jobgo-student-service</artifactId>

    <dependencies>

        <!--jobgo-student-interface-->
        <dependency>
            <groupId>com.jobgo</groupId>
            <artifactId>jobgo-student-interface</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!--springmvc开发-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--eureka客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.0.1.RELEASE</version>
        </dependency>

        <!-- springBoot JPA的起步依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <!--java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;-->
        <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>persistence-api</artifactId>
            <version>1.0.2</version>
        </dependency>

        <!--MySql数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!--HikariCP数据库连接池-->
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>3.3.1</version>
            <!--<type>pom</type>-->
            <!--<scope>compile</scope>-->
        </dependency>

        <!-- JDBC连接数据库,因为要用HikariCP,所以需要将SpringBoot中的tomcat-jdbc排除 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.tomcat</groupId>
                    <artifactId>tomcat-jdbc</artifactId>
                </exclusion>
            </exclusions>
        </dependency>



    </dependencies>

</project>

修改StudentApplication

package com.jobgo.student;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * create: 2019-07-04 21:39
 * update: 2019-07-04 21:39
 */
@SpringBootApplication
@EnableDiscoveryClient // 兼容eureka等一系列服务
public class StudentApplication {
    public static void main(String[] args) {
        SpringApplication.run(StudentApplication.class);
    }
}

 修改application.yml

server:
  #### 修改端口
  port: 8081
spring:
  application:
    name: student-service
  #### 数据源
  datasource:
    #### 数据库配置
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: xwEPP-Fd2zcf
    #### Hikari 连接池配置 ------ 详细配置请访问:https://github.com/brettwooldridge/HikariCP
    hikari:
      #### 最小空闲连接数量
      minimum-idle: 5
      #### 空闲连接存活最大时间,默认600000(10分钟)
      idle-timeout: 180000
      #### 连接池最大连接数,默认是10
      maximum-pool-size: 10
      #### 此属性控制从池返回的连接的默认自动提交行为,默认值:true
      auto-commit: true
      #### 连接池母子
      pool-name: MyHikariCP
      #### 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
      max-lifetime: 1800000
      #### 数据库连接超时时间,默认30秒,即30000
      connection-timeout: 30000
      connection-test-query: SELECT 1

  #### Spring Data JPA
  jpa:
    database: mysql
    show-sql: true
    generate-ddl: true
    hibernate:
      ddl-auto: update
      naming_strategy: org.hibernate.cfg.ImprovedNamingStrategy
  redis:
    host: 127.0.0.1
    port: 6379
    password: 123456
#### euraka注册中心
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:11001/eureka

启动服务器

测试,访问localhost:11001

初步环境搭建完成

原创文章 28 获赞 52 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq1123642601/article/details/94632285