前言:本着学习目的搭建一个简单springcloud项目,遇到较多idea版本,jdk版本,springboot,springCloud,feign版本冲突问题,记录搭建过程。笔者使用的环境及版本 idea:2023;jdk:1.8;springboot:2.2.5.RELEASE;spring-cloud:Hoxton.RELEASE;eureka:3.1.4;feign:2.1.0.RELEASE

1.idea创建springcloud项目,整合eureka

 1-1创建项目,划箭头处选项需注意

删除框起来的部分

1.2创建子项目

1.3子项目父工程更改如下图:

1.4父项目modules加入子项目,如下加入创建的三个子项目; 注意packaging类型需改成pom

父项目指定springcloud版本

父,子项目pom文件java版本改为1.8

1.5 eureka项目需加如下依赖;启动类需加@EnableEurekaServer注解。
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    <version>3.1.4</version>
</dependency>
yml配置如下:
server:
  port: 8081
spring:
  application:
    name: eureka-server
eureka:
  instance:
    hostname: localhost   
  client:
    registerWithEureka: false 
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://127.0.0.1:8081/eureka/

1.6 base服务和busi服务需加如下依赖;启动类需加@EnableDiscoveryClient注解

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    <version>3.1.4</version>
</dependency>

busi yml配置如下;base配置类似,

server:
  port: 8083
eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://127.0.0.1:8081/eureka/
spring:
  application:
    name: busi-server

1.7启动三个服务,效果如下;有框起来的两个服务代表成功注入eureka

2.加入mybatis-plus+达梦数据库连接

2.1 base服务添加相关依赖,XXX-spring-boot-starter为内部连接数据库相关依赖,为做版本兼容,加入了aspectjweaver及commons-lang依赖。如用开源版,相对简单,仅需mybatis-plus+达梦相关依赖。

<dependency>
    <groupId>com.nstc.framework</groupId>
    <artifactId>XXX-spring-boot-starter</artifactId>
    <version>1.1.0</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.16</version>
</dependency>
<dependency>
    <groupId>com.dm</groupId>
    <artifactId>DmJdbcDriver</artifactId>
    <version>1.8.0</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.6</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.9.6</version>
</dependency>
<dependency>
    <groupId>commons-lang</groupId>
    <artifactId>commons-lang</artifactId>
    <version>2.5</version>
</dependency>

2.2 base yml增加相关配置,注意url,username,password自行更改

spring:
  application:
    name: base-server
  datasource:
    dynamic:
      datasource:
        jt_dm:
          poolName: jt_dm
          driver-class-name: dm.jdbc.driver.DmDriver
          url: jdbc:dm://11.11.11.11:5236?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
          username: xxxx
          password: 123456
      druid:
        filters: stat
        #自定义过滤器配置:stat、slf4j、log4j、log4j2、commons-log、wall
        #内置Filter都是默认配置,无法满足需求时,则可以自定义 Filter,自定义的过滤器默认都是没有开启的。
        filter:
          stat: #状态监控过滤器
            enabled: true
            db-type: dm
            log-slow-sql: true  #开启慢sql监控,超过指定时间则认为是慢sql,记录到日志中
            slow-sql-millis: 5000
      enabled: true
      p6spy: false
      primary: jt_dm
      seata: false
      strict: true

mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
  typeAliasesPackage: com.example.base.entity.*

2.3base启动类加注解@MapperScan(basePackages = "com.example.base.dao")

其余结构层级如下图

注意XXXMapper.xml达梦有多个库时查询sql需要带上数据库名.表名, 默认的一个库不需要带数据库名

2.4运行测试类,下面两个查询selectAll和selectAll2分别查询了不同库的表,结果如下:

3.加入openFeign。base服务为服务提供方,busi服务为服务调用方

3.1base,busi服务加入operdeign依赖,启动类加上@EnableFeignClients注解

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>

3.2base对外接口

注意@Api(tags = "测试控制器")  @ApiOperation(value = "fegin查询接口")注解是swagger相关的

3.3busi编写FeignClient,注意url需要填写。 如整合gatherway网关,可不写url

@FeignClient,name为base服务名spring.application.name;path为server.servlet.context-path,url些base服务地址+端口

3.4busi服务测试类调用结果如下:

4.整合swagger

4.1pom引用内部jia

4.2swagger配置文件如下:

Configuration
@EnableSwagger2
public class BiSwaggerConfig extends SwaggerConfig {
    /**
     * 是否开启swagger
     */
    @Value("${swagger.enabled:false}")
    private boolean enabled;
    /**
     * 设置请求的统一前缀
     */
    @Value("${swagger.pathMapping:/}")
    private String pathMapping;
    @Bean
    public Docket createSettingRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .enable(enabled)
                .apiInfo(apiInfo())
                .groupName("测试分组")
                .select()
                .apis(Predicates.or(RequestHandlerSelectors.basePackage("com.example.base.controller")))
                .paths(PathSelectors.any())
                .build()
                .pathMapping(pathMapping);
    }
    @Override
    protected ApiInfo apiInfo() {
        //添加摘要信息
        return new ApiInfoBuilder()
                .title("BI接口文档")// 设置标题
                .description("接口文档") // 描述
                .contact(new Contact("哈哈", "www.xx.com.cn", "mail@xx.com.cn")) // 作者信息
                .version("版本号:1.1.0")// 版本
                .build();
    }
4.3 控制器及接口增加注解 @Api(tags = "测试控制器")  @ApiOperation(value = "fegin查询接口")
4.4启动效果如下 http://localhost:8082/base/doc.html

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐