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
初步环境搭建完成