天才在左,疯子在右!
二、前期准备
本项目暂定项目名GooReeyProject,SpringBoot + Vue构建,具体项目内容未定。
基本架构nacos、gateway、Linux、Redis、rabbitMQ、MySQL、docker、Vue。

1、安装MySQL5.7
2、安装nacos
我安装的是window版的nacos和MySQL,安装nacos时需要注意,要讲配置文件中的集群版改为单机版,才能启动!
3、安装Redis
三、创建父工程
我觉得主要是pom文件
<?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.guor</groupId> <artifactId>GooReeyProject</artifactId> <version>1.0-SNAPSHOT</version> <modules> <module>01common</module> <module>02gateway</module> </modules> <properties> <system.version>1.0.0</system.version> <system.ip>127.0.0.1</system.ip> <system.sport>808</system.sport> <system.mode>http</system.mode> <java.version>1.8</java.version> <spring-cloud.version>Greenwich.SR1</spring-cloud.version> <skipTests>true</skipTests> <nacos.version>0.2.2.RELEASE</nacos.version> </properties> <packaging>pom</packaging> <name>GooReeyProject</name> <description>This is parent project</description> <!-- 本项目的父模块使用spring-boot框架 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.5</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.23</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>0.2.1.RELEASE</version> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${nacos.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>/.</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>/.yml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>/.xml</include> </includes> </resource> </resources> </build></project>
四、创建gateway子工程
1、pom文件
<?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>GooReeyProject</artifactId> <groupId>com.guor</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>02gateway</artifactId> <dependencies> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <exclusions> <exclusion> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </dependencyManagement> <build> <finalName>gateway-${system.version}</finalName> </build></project>
2、配置文件
spring: application: name: gateway cloud: nacos: discovery: server-addr: 127.0.0.1:8848 config: server-addr: 127.0.0.1:8848 file-extension: yml ext-config: - data-id: datasource-share-config.yml group: SHARE_GROUP refresh: true - data-id: log-share-config.yml group: SHARE_GROUP refresh: true
(1)gateway.yml
server: port: 8080 spring: application: name: gateway version: 1.0.0 cloud: gateway: discovery: locator: enabled: true lowerCaseServiceId: true filters: - StripPrefix=1 routes: - id: management uri: lb:management # 服务端 service_id predicates: - Path=/management/ filters: - name: Hystrix args: name: fallbackcmd fallbackUri: forward:/defaultFallback - id: demo uri: lb://demo predicates: - Path=/demo/ hystrix: command: default: execution: isolation: strategy: SEMAPHORE thread: timeoutInMilliseconds: 1500 shareSecurityContext: true config: scheduleThreadPool: 5 restTemplateTimeout: 3000 setting: loginAccessPath: /permission login: tokenCheckFrequency: 600000
(2)datasource-share-config.yml
spring: datasource: url: jdbc:mysql://localhost:3306/blue?serverTimezone=UTC driverClassName: com.mysql.cj.jdbc.Driver username: root password: rootmybatis: typeAliasesPackage: com.guor..bean. mapperLocations: classpath:/com/guor//dao/mapping/Mapper.xml configuration: map-underscore-to-camel-case: true
(3)log-share-config.yml
logging: path: logs level: root: info com.panasonic.mes: debug com.panasonic.mes.editor: debug com.alibaba.nacos.client.naming: warn file: max-size: 20MB max-history: 30 pattern: file: "%d{${LOG_DATEFORMAT_PATTERN:yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:%5p} ${PID:- } --- [%15.15t] %-40.40logger{39} [%5.5line] : %m%n${LOG_EXCEPTION_CONVERSION_WORD:%wEx}" console: "%d{${LOG_DATEFORMAT_PATTERN:yyyy-MM-dd HH:mm:ss.SSS}} %clr(${LOG_LEVEL_PATTERN:%5p}) %clr(${PID:- }){magenta} --- %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr([%5.5line]){cyan} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:%wEx}"
3、启动类
package com.guor; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.context.config.annotation.RefreshScope;import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)@EnableDiscoveryClient@EnableScheduling@RefreshScopepublic class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); System.out.println("hello world"); }}
1、pom文件
<?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>GooReeyProject</artifactId> <groupId>com.guor</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>03management</artifactId> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!--MySQL依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> </dependencies> <build> <finalName>management-${system.version}</finalName> </build></project>
2、配置文件
spring: application: name: management cloud: nacos: discovery: server-addr: 127.0.0.1:8848 config: server-addr: 127.0.0.1:8848 file-extension: yml ext-config: - data-id: datasource-share-config.yml group: SHARE_GROUP refresh: true - data-id: log-share-config.yml group: SHARE_GROUP refresh: true
server: port: 8081 spring: application: name: management version: 1.0.0 mvc: static-path-pattern: /management/ resources: static-locations: - file:../../web/management - file:../../web/common
3、启动类
package com.guor; import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.context.config.annotation.RefreshScope; @EnableDiscoveryClient@SpringBootApplication(scanBasePackages = "com.guor")@MapperScan("com.guor.management.dao")@RefreshScopepublic class ManagementApplication { public static void main(String[] args) { SpringApplication.run(ManagementApplication.class, args); } }
1、user表设计
数据库选择的是最常用的MySQL
CREATE TABLE `user` ( `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `username` varchar(100) NOT NULL, `password` varchar(40) NOT NULL, `age` int(11) DEFAULT NULL, `sex` int(11) DEFAULT NULL, `telephone` varchar(100) DEFAULT NULL, `address` varchar(100) DEFAULT NULL, `create_date` date DEFAULT NULL, `update_date` date DEFAULT NULL, `deleted` int(11) DEFAULT NULL, `version` int(11) DEFAULT NULL, PRIMARY KEY (`user_id`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
2、UserController
package com.guor.management.controller; import com.guor.management.bean.User;import com.guor.management.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PutMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestControllerpublic class UserController { @Autowired private UserService userService; @GetMapping("/getUserList") public List<User> getUserList(){ return userService.getUserList(); } @PutMapping("/insertUser") public void insertUser(@RequestBody User user){ userService.insertUser(user); }}
3、UserService
package com.guor.management.service; import com.guor.management.bean.User; import java.util.List; public interface UserService { List<User> getUserList(); void insertUser(User user);}
package com.guor.management.service.impl; import com.guor.management.bean.User;import com.guor.management.dao.UserMapper;import com.guor.management.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service; import java.util.List; @Servicepublic class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public List<User> getUserList() { return userMapper.getUserList(); } @Override public void insertUser(User user) { userMapper.insertUser(user); }}
4、UserMapper
package com.guor.management.dao; import com.guor.management.bean.User; import java.util.List; public interface UserMapper { public List<User> getUserList(); public void insertUser(User user);}
<?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.guor.management.dao.UserMapper"> <select id="getUserList" resultType="java.util.LinkedHashMap"> select from user; </select> <insert id="insertUser" parameterType="com.guor.management.bean.User"> INSERT INTO gooreey.`user` (username, password) VALUES (#{username}, #{password}); </insert></mapper>
5、User
package com.guor.management.bean; import com.guor.base.bean.BaseBean;import lombok.Data; @Datapublic class User extends BaseBean { private Integer userId; private String username; private String password; private Integer age; private Integer sex; private String telephone; private String address;}
package com.guor.base.bean; import lombok.Data; import java.util.Date; @Datapublic class BaseBean { private Date createDate; private Date updateDate; private Integer deleted; private Integer version;}
6、postman接口测试