SAAS-HRM-day2
- 1. hrm仓库搭建
- 1.1 在GitHub创建仓库
- 1.2 项目初始化
- 1.3 把项目导入idea,完成版本控制
- 2. 配置中心搭建
- 2.1 github配置库
- 2.2 配置中心服务端
- 2.2.1 步骤分析
- 2.2.2 步骤实现
- 2.3 配置中心客户端-zuul改造
- 2.3.1 步骤分析
- 2.3.2 步骤实现
- 2.4 配置中心客户端-系统管理中心改造
- 2.4.1 步骤分析
- 2.4.2 步骤实现
- 3. 课程中心后台搭建
- 3.1 步骤分析
- 3.2 步骤实现
- 3.2.1 hrm_course_interface配置
- 3.2.2 hrm_course_service配置
- 3.3 Swagger配置
- 3.3.1 本项目swagger配置
- 3.3.2 网关swagger配置
- 4. 后台管理前端搭建-课程类型表的crud
- 4.1 准备工作
- 4.2 修改前端
- 4.2.1 步骤分析
- 4.2.2 步骤实现
- 5. 坑点注意
- 把项目仓库地址克隆到本地
- 拷贝项目原型到本地的克隆文件夹里,添加,提交并推送
- 拉取仓库忽略target和idea,添加,提交并推送
2. 配置中心搭建 2.1 github配置库 在github创建配置仓库 https://github.com/94only/hrm_config.git
2.2 配置中心服务端 2.2.1 步骤分析
- 创建服务端项目
- 导入jar
- application.yml配置
- 入口类
- 测试
- 创建服务端项目
在二级子模块hrm_support_parent下创建三级子模块hrm_config_server
- 导包
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
org.springframework.cloud
spring-cloud-config-server
- application.yml配置
server:
port: 8848 # 端口
spring:
application:
name: config-server # 起个名字
cloud:
config:
server:
git:
uri: https://github.com/94only/hrm_config.git # 配置仓库的地址
username: 1094431266@qq.com # github用户名
password: rootapy06942# GitHub密码
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka # 注册到eureka的地址
instance:
prefer-ip-address: true # 显示真实ip
- 入口类
package cn.wangningbo.hrm;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
@EnableConfigServer
public class ConfigServer8848Application {
public static void main(String[] args) {
SpringApplication.run(ConfigServer8848Application.class, args);
}
}
- 测试
先启动EurekaServer7001Application,再启动ConfigServer8848Application。然后浏览器访问地址http://localhost:7001/,看到CONFIG-SERVER注册进去了即可算作成功
2.3.1 步骤分析
这个时候它的配置应该是从GitHub的配置中心获取
- github远程仓库准备好配置zuul的配置文件
- 导包
- 做配置
- 测试
- github远程仓库准备好配置zuul的配置文件(注意:eureka的配置不能放上去)
server:
port: 9527
spring:
application:
name: zuul-gateway
zuul:
routes:
sysmanage.serviceId: hrm-sysmanage # 服务名
sysmanage.path: /sysmanage/** # 把myUser打头的所有请求都转发给user-provider
ignored-services: "*" # 所有服务都不允许以服务名来访问
prefix: "/services" # 加一个统一前缀
retryable: true # 是否重试
ribbon:
ConnectTimeout: 250 # 连接超时时间(ms)
ReadTimeout: 2000 # 通信超时时间(ms)
OkToRetryOnAllOperations: true # 是否对所有操作重试
MaxAutoRetriesNextServer: 2 # 同一服务不同实例的重试次数
MaxAutoRetries: 1 # 同一实例的重试次数
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMillisecond: 3000 # 熔断超时时长:3000ms
- 导包
org.springframework.cloud
spring-cloud-starter-config
- 做配置application.yml
spring:
profiles:
active: dev
cloud:
config:
#uri: http://localhost:8848 # 配置configserver单个服务器的时候
discovery:
enabled: true
service-id: config-server # 多个服务器的时候,根据名字从配置中心获取多个服务
label: master # 分支名字
name: application-zuul# 文件名字
profile: ${spring.profiles.active} # 那个环境
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka
instance:
# instance-id: gateway-9527.com
prefer-ip-address: true
- 测试
先启动,在启动,最后启动,如果都没报错,并且注册到了注册中心,端口是指定的9527,即可算作成功!
- github远程仓库准备好配置sysmanage的配置文件
server:
port: 9001
spring:
application:
name: hrm-sysmanage
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/hrm_sysmanage
username: root
password: apy06942
mybatis-plus:
mapper-locations: classpath:cn/wangningbo/hrm/mapper/*Mapper.xml
type-aliases-package: cn.wangningbo.hrm.domain,cn.wangningbo.hrm.query
- 导包
org.springframework.cloud
spring-cloud-starter-config
- 做配置
- 测试
3. 课程中心后台搭建 3.1 步骤分析
- 创建二级子模块hrm_course_parent
- 在二级子模块hrm_course_parent下创建两个三级子模块hrm_course_interface和hrm_course_service
- hrm_course_interface配置
3.1 导入jar
3.2 表设计
3.3 代码生成
- hrm_course_service配置
4.1 导入jar
4.2 配置文件
4.3 入口类
4.4 启动测试eureka服务里面有没有
4.5 配置到配置中心
4.6 入口类
4.7 测试
4.8 配置到网关,实现网关访问
4.9 postman测试
- 创建二级子模块hrm_course_parent
- 在二级子模块hrm_course_parent下创建两个三级子模块hrm_course_interface和hrm_course_service
- 导入jar
cn.wangningbo.hrm
hrm_basic_util
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
com.baomidou
mybatis-plus
2.2.0
org.springframework.cloud
spring-cloud-starter-openfeign
- 表设计
- 代码生成
在hrm_course_service配置完以后
- 导入jar
cn.wangningbo.hrm
hrm_course_interface
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
com.baomidou
mybatis-plus-boot-starter
2.2.0
mysql
mysql-connector-java
org.springframework.cloud
spring-cloud-starter-config
io.springfox
springfox-swagger2
2.9.2
io.springfox
springfox-swagger-ui
2.9.2
- 配置文件
server:
port: 9002
spring:
application:
name: hrm-course
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/hrm_course
username: root
password: apy06942
mybatis-plus:
mapper-locations: classpath:cn/wangningbo/hrm/mapper/*Mapper.xml
type-aliases-package: cn.wangningbo.hrm.domain,cn.wangningbo.hrm.query
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka
instance:
prefer-ip-address: true
- 入口类
- 启动测试eureka服务里面有没有
- 配置到配置中心
- 入口类
package cn.wangningbo.hrm;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
@MapperScan("cn.wangningbo.hrm.mapper")
public class Course9002Application {
public static void main(String[] args) {
SpringApplication.run(Course9002Application.class, args);
}
}
- 测试
访问,查看是否可以拿到数据
- 配置到网关,实现网关访问
sysmanage.serviceId: hrm-course # 服务名
sysmanage.path: /course/** # 把myUser打头的所有请求都转发给user-provider
- postman测试
- 在service模块里面导入jar
io.springfox
springfox-swagger2
2.9.2
io.springfox
springfox-swagger-ui
2.9.2
- 准备swagger所需类
package cn.wangningbo.hrm.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class Swagger2 {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//对外暴露服务的包,以controller的方式暴露,所以就是controller的包.
.apis(RequestHandlerSelectors.basePackage("cn.wangningbo.hrm.web.controller"))
.paths(PathSelectors.any())
.build();
}private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("课程中心api")
.description("课程中心接口文档说明")
.contact(new Contact("wangningbo", "", "wang_ning_bo163@163.com"))
.version("1.0")
.build();
}
}
3.3.2 网关swagger配置
在网关的配置那里新加一行代码
resources.add(swaggerResource("课程中心", "/services/course/v2/api-docs", "2.0"));
4. 后台管理前端搭建-课程类型表的crud 4.1 准备工作 准备一个elementui的前端项目,注释掉登录拦截和修改端口,修改项目名字
4.2 修改前端 4.2.1 步骤分析
- 写一个coursetype.vue文件,实现增删改查
- 配置路由
- 配置axios通过网关访问
- 配置跨域请求通过
- 测试
- 写一个coursetype.vue文件,实现增删改查
- 配置路由
- 配置axios通过网关访问
//配置axios的全局基本路径
axios.defaults.baseURL = 'http://localhost:9527/services/'
- 配置跨域请求通过
【SAAS-HRM-day2】在网关中配置跨域请求通过
package cn.wangningbo.hrm.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
//跨域处理
@Configuration
public class GlobalCorsConfig {
@Bean
public CorsFilter corsFilter() {
//1.添加CORS配置信息
CorsConfiguration config = new CorsConfiguration();
//1) 允许的域,不要写*,否则cookie就无法使用了
config.addAllowedOrigin("http://127.0.0.1:6001");
config.addAllowedOrigin("http://localhost:6001");
//2) 是否发送Cookie信息
config.setAllowCredentials(true);
//3) 允许的请求方式
config.addAllowedMethod("OPTIONS");
config.addAllowedMethod("HEAD");
config.addAllowedMethod("GET");
config.addAllowedMethod("PUT");
config.addAllowedMethod("POST");
config.addAllowedMethod("DELETE");
config.addAllowedMethod("PATCH");
// 4)允许的头信息
config.addAllowedHeader("*");
//2.添加映射路径,我们拦截一切请求
UrlBasedCorsConfigurationSource configSource = new
UrlBasedCorsConfigurationSource();
configSource.registerCorsConfiguration("/**", config);
//3.返回新的CorsFilter.
return new CorsFilter(configSource);
}
}
- 测试
- github的配置文件编码
- idea的编码
- 分页那里没拿到总数,要使用分页插件。
//Spring boot方式:配置分页插件
@EnableTransactionManagement
@Configuration
@MapperScan(" cn.wangningbo.hrm.mapper")
public class MybatisPlusConfig {@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
推荐阅读
- py连接mysql
- VM|VM ware 的 harbor 私有仓库搭建 (Ubuntu16.04)
- day16-Linux|day16-Linux 软件管理
- [2018-02-22]|[2018-02-22] Git之远程仓库
- 关联gitclub远程仓库
- git本地仓库推送到远程仓库报错
- git的基本使用
- cmd配置npm仓库镜像报错
- git|git 创建版本库
- 从托管到原生,MPP架构数据仓库的云原生实践