1.创建模块
2.导入eruaka-client,web,config-client
<dependencies> <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> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-client</artifactId> </dependency> </dependencies>
3.配置Application,yml基础配置
@SpringBootApplication @EnableEurekaClient public class CourseApplication1060 { public static void main(String[] args) { SpringApplication.run(CourseApplication1060.class); } }
4.MyBatis-Plus
1.修改目录路径
#代码输出基本路径 OutputDir=F:/IDEAWorkSpace/myhrm-parent/hrm-course-parent/hrm-course-service-1060/src/main/java #mapper.xml SQL映射文件目录 OutputDirXml=F:/IDEAWorkSpace/myhrm-parent/hrm-course-parent/hrm-course-service-1060/src/main/resources #domain的输出路径 OutputDirBase=F:/IDEAWorkSpace/myhrm-parent/hrm-course-parent/hrm-course-common/src/main/java
2.修改数据库
#数据库连接信息 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql:///hrm-course jdbc.user=root jdbc.pwd=123456
修改主类的配置及需要的位置
5.修改pom导入需要的数据库连接Swwager等公共包
<dependency> <groupId>cn.jiedada</groupId> <artifactId>hrm-system-common</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>cn.jiedada</groupId> <artifactId>hrm-basic-util</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.9</version> </dependency> <!--引入swagger支持--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>
6.修改application.yml和bootstrap.yml中的配置及zuul中的配置
application.yml
server: port: 1060 spring: application: name: course-service datasource: username: root password: 123456 url: jdbc:mysql:///hrm-course driver-class-name: com.mysql.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource eureka: client: service-url: defaultZone: http://localhost:1010/eureka instance: prefer-ip-address: true instance-id: course-server:1060 mybatis-plus: #集成MyBatis-Plus mapper-locations: classpath:cn/jiedada/hrm/mapper/*Mapper.xml #type-aliases-package: cn.itsource.hrm.domain,cn.itsource.hrm.query
bootstrap.yml
#配置中心的地址 spring: cloud: config: uri: http://localhost:1030 #zuul要从配置中心拉取文件 name: application-course #配置文件名字 dev是环境 profile: dev #环境 组成完整的文件名:application-zuul-dev.yml
zuul.yml
eureka: client: serviceUrl: #注册到EurekaServer defaultZone: http://localhost:1010/eureka/ instance: prefer-ip-address: true instance-id: zuul-server:1020 spring: application: name: zuul-server server: port: 1020 zuul: prefix: "/hrm" #统一访问前缀 ignoredServices: "*" #禁用掉使用浏览器通过服务名的方式访问服务 routes: system-service: "/system/**" #指定pay-server这个服务使用 /pay路径来访问 - 别名 file-service: "/file/**" #指定pay-server这个服务使用 /pay路径来访问 - 别名 course-service: "/course/**" #指定pay-server这个服务使用 /pay路径来访问 - 别名
7.添加两个配置类
package cn.jiedada.hrm.config; import com.baomidou.mybatisplus.plugins.PaginationInterceptor; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; @Configuration @MapperScan("cn.jiedada.hrm.mapper") //mapper接口扫描 @EnableTransactionManagement //事务管理 public class MybatisPlusConfig { /** * 分页插件 */ @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } }
package cn.jiedada.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.jiedada.hrm.web.controller")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("课程中心接口API") .description("课程中心接口API"文档说明") .contact(new Contact("jiedada", "", "jiedada@shuaiqi.cn")) .version("1.0") .build(); } }
在zuul中的Swwager中添加这行代码
resources.add(swaggerResource("课程中心", "/hrm/course/v2/api-docs", "2.0"));
这是整体代码
package cn.jiedada.hrm.config; import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; import springfox.documentation.swagger.web.SwaggerResource; import springfox.documentation.swagger.web.SwaggerResourcesProvider; import java.util.ArrayList; import java.util.List; @Component @Primary public class DocumentationConfig implements SwaggerResourcesProvider { @Override public List<SwaggerResource> get() { List resources = new ArrayList<>(); /** * zuul: prefix: "/hrm" #统一访问前缀 ignoredServices: "*" #禁用掉使用浏览器通过服务名的方式访问服务 routes: system-service: "/system/**" #指定pay-server这个服务使用 /pay路径来访问 - 别名 */ //需要修改为服务的配置的服务的处理/前置服务/服务名称/v2/api-docs resources.add(swaggerResource("系统管理", "/hrm/system/v2/api-docs", "2.0")); resources.add(swaggerResource("课程中心", "/hrm/course/v2/api-docs", "2.0")); return resources; } private SwaggerResource swaggerResource(String name, String location, String version) { SwaggerResource swaggerResource = new SwaggerResource(); swaggerResource.setName(name); swaggerResource.setLocation(location); swaggerResource.setSwaggerVersion(version); return swaggerResource; } }