<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.9.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.laiya</groupId> <artifactId>user-center</artifactId> <version>0.0.1-SNAPSHOT</version> <name>user-center</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <!--Sporing Boot--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--Nacos--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--feign--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-httpclient</artifactId> </dependency> <!-- nacos 動態配置--> <!-- <dependency>--> <!-- <groupId>com.alibaba.cloud</groupId>--> <!-- <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>--> <!-- </dependency>--> <!--Redis--> <!-- <dependency>--> <!-- <groupId>org.springframework.boot</groupId>--> <!-- <artifactId>spring-boot-starter-data-redis-reactive</artifactId>--> <!-- </dependency>--> <!--Mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!--Mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.2</version> </dependency> <!--Lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> <!--Test--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-websocket</artifactId> <version>5.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-sentinel</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <!--整合Spring Cloud--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Greenwich.SR3</version> <type>pom</type> <scope>import</scope> </dependency> <!--整合Spring Cloud Alibaba--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!--分別設置開發,測試,生產環境--> <profiles> <!-- 開發環境 --> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <environment>dev</environment> </properties> </profile> <!-- 測試環境 --> <profile> <id>test</id> <activation> <activeByDefault>false</activeByDefault> </activation> <properties> <environment>test</environment> </properties> </profile> <!-- 生產環境 --> <profile> <id>pro</id> <activation> <activeByDefault>false</activeByDefault> </activation> <properties> <environment>pro</environment> </properties> </profile> </profiles> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.16</version> </dependency> </dependencies> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>8</source> <target>8</target> </configuration> </plugin> </plugins> <!-- 打包後文件名稱:項目名-環境-版本 --> <finalName>${project.artifactId}-${environment}-${project.version}</finalName> <resources> <resource> <directory>src/main/resources</directory> <!-- 開啓過濾替換功能--> <filtering>true</filtering> <includes> <!-- 項目打包完成的包中只包含當前環境文件 --> <include>application.yml</include> <include>application-${environment}.yml</include> <include>bootstrap.yml</include> <include>mybatis/*/*.xml</include> <include>templates/*.html</include> <include>static/</include> </includes> </resource> </resources> </build> </project>
pom 裏配置了多環境打包,openfeign,zipkin,actuator,sentinel,websocket,lombok 等組件下面對這些組件html
實現多環境打包須要配置多個*.yml 配置文件,配置文件java
spring: profiles: active: "@environment@"
application-dev內容mysql
#======================================# #========== Server settings ==========# #======================================# server: port: 8086 # servlet: # context-path: /user-center tomcat: uri-encoding: UTF-8 spring: #server name application: name: user-center #======================================# #========== Database settings ==========# #======================================# datasource: driver-class-name: com.mysql.cj.jdbc.Driver username: password: xxxxx url: jxxxxx #======================================# #========== Nacos ==========# #======================================# cloud: nacos: discovery: # nacos server address server-addr: xxxx thymeleaf: prefix: classpath:/templates/ check-template-location: true suffix: .html encoding: utf-8 servlet: content-type: text/html mode: HTML5 cache: false #======================================# #========== zipkin ==========# #======================================# zipkin: base-url:xxx discovery-client-enabled: false sleuth: sampler: # 抽樣率 10% probability: 1.0 #======================================# #========== MyBatis settings ==========# #======================================# mybatis: mapper-locations: classpath:templates/*/*.xml #======================================# #========== Redis settings ==========# #======================================# # redis: # enabled: true # host: xxx # port: 6379 # ssl: false # database: 0 # password: x'x'x'x # jedis: # pool: # # 最大空閒鏈接數 # maxIdle: 3 # # 最大活動鏈接數 # maxActive: 20 feign: client: config: # 想要配置的微服務 名稱 全局配置 default user-center: loggerLevel: full # httpclient 鏈接池 httpclient: enabled: true # feign 的最大鏈接數 max-connections: 200 # feign 的單個路徑最大鏈接數 max-connections-per-route: 50 #======================================# #========== Config sttings ==========# #======================================# # body: controllerMethodList: swaggerResources, getDocumentation management: endpoints: web: exposure: include: '*'
mysql 配置信息說明react
datasource: driver-class-name: com.mysql.cj.jdbc.Driver username: password: xxxxx url: jxxxxx
mysql 版本>= 6.x 須要用 com.mysql.cj.jdbc.Driver
mysql 版本<= 5.x 須要用 com.mysql.jdbc.Driver
** com.mysql.jdbc.Driver 源碼 以下**git
public class Driver extends com.mysql.cj.jdbc.Driver { public Driver() throws SQLException { super(); } static { System.err.println("Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. " + "The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary."); } }
經過源碼咱們能夠看到 Driver 繼承了 com.mysql.cj.jdbc.Driver,若是不加 cj
項目也能夠運行可是會打印出一句警告的話,大概意思是說驅動版本須要升級
因此在出現這句話的時候你們不要謊。github
另外須要注意的是在爲應用起名字的時候儘可能不要用_
和特殊字符,能夠用-
,不然在啓動的時候會打印出警告web
針對微服務,咱們在新增微服務組件的時候儘可能遵循三個步驟
1 pom 文件引入依賴
2 yml 寫配置
3 項目加註解redis
用戶微服務引入Nacos 步驟spring
<!--Nacos--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
#=========================# #========== Nacos =========# #=========================# spring: cloud: nacos: discovery: server-addr: (nacos 請求地址,格式爲 ip[域名]:port; 例如 xxx.com:8848,注意 地址前面不要加http 後者https) # namespace: (Nacos 命名空間的uuid 不是名稱) # cluster-name: xxx
下一節會爲你們講解服務和服務之間的調用,但願可以幫助你們搭建一個簡單的微服務系統。sql