欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Feign+mybatisplus搭建項(xiàng)目遇到的坑及解決

 更新時(shí)間:2023年03月30日 14:18:47   作者:清淡看朝霞  
這篇文章主要介紹了Feign+mybatisplus搭建項(xiàng)目遇到的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

出現(xiàn)的錯(cuò)誤

1.Failed to bind properties under ‘spring.datasource’ to javax.sql.DataSource:

2.@org.springframework.beans.factory.annotation.Autowired(required=true)等

原因(簡(jiǎn)潔說(shuō)明)

使用代碼生成器的service層需要繼承extends IService,這是一個(gè)坑,它不可以在接口工程中使用,實(shí)體類(lèi)可以

如果想要使用mp的功能,就需要:

—— > 1.接口工程中創(chuàng)建無(wú)extends IService的接口 A

—— > 2.provider工程中放入代碼生成的service層 接口B

—— > 3.provider工程的實(shí)現(xiàn)類(lèi)需要 implements A,B

代碼

接口工程

import com.study.seckill.entity.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.util.List;

@Service
@FeignClient(value = "seckill-provider-localhost")
public interface IUserService /*extends IService<User>*/ {

    @RequestMapping(value = "/users",method = RequestMethod.GET)
    public List<User> quallAll();

}

接口工程依賴(lài)

<dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>

    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-generate</artifactId>
      <version>2.2.0</version>
    </dependency>
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-extension</artifactId>
      <version>3.1.1</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
  </dependencies>

–注意不要有druid數(shù)據(jù)源依賴(lài),可能會(huì)報(bào)sqlSession等異常–

consumer工程代碼

controller

@RestController
public class UserConsumerController {

    @Autowired
    private IUserService iUserService;

    @GetMapping(value = "/users")
    public  String queryByName(){
        List<User> users = iUserService.quallAll();
        return users.toString();
    }
    
}

啟動(dòng)類(lèi)

@EnableFeignClients(basePackages = {"com.study.seckill"})
@SpringBootApplication
@EnableEurekaClient
public class Seckill_Consumer_8080 {
    public static void main(String[] args) {
        SpringApplication.run(Seckill_Consumer_8080.class, args);
    }
}

consumer依賴(lài)

 <dependencies>
    <dependency>
      <groupId>com.study</groupId>
      <artifactId>seckill-api</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-ribbon</artifactId>
      <version>1.4.6.RELEASE</version>
    </dependency>

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

    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-hystrix</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
    </dependency>
  </dependencies>

consumer的application.yml

server:
  port: 8080
#配置eureka
eureka:
  client:
    register-with-eureka: true
    service-url:
      defaultZone: http://localhost:7001/eureka/
  instance:
    instance-id: seckill-consumer-8080
    prefer-ip-address: true
spring:
  application:
    name: seckill-consumer-8080

#開(kāi)啟降級(jí)
feign:
#  hystrix:
#    enabled: true

#feign客戶(hù)端負(fù)載均衡策略
#seckill-provider-localhost:
#  ribbon:
#
##   NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #配置規(guī)則 隨機(jī)
#    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #配置規(guī)則 輪詢(xún)
##   NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RetryRule #配置規(guī)則 重試
##   NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule #配置規(guī)則 響應(yīng)時(shí)間權(quán)重
##   NFLoadBalancerRuleClassName: com.netflix.loadbalancer.BestAvailableRule #配置規(guī)則 最空閑連接策略
#    ConnectTimeout: 5000 #請(qǐng)求連接超時(shí)時(shí)間
#    ReadTimeout: 10000 #請(qǐng)求處理的超時(shí)時(shí)間
#    OkToRetryOnAllOperations: true #對(duì)所有請(qǐng)求都進(jìn)行重試
#    MaxAutoRetriesNextServer: 2 #切換實(shí)例的重試次數(shù)
#    MaxAutoRetries: 2 #對(duì)當(dāng)前實(shí)例的重試次數(shù)

prodvider工程

如圖:UserServiceImpl 需要實(shí)現(xiàn)這個(gè)UserService和IUserService

service層結(jié)構(gòu)

import com.baomidou.mybatisplus.extension.service.IService;
import com.study.seckill.entity.User;
public interface UserService  extends IService<User> {
}
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.study.seckill.entity.User;
import com.study.seckill.mapper.UserMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.study.seckill.service.IUserService;
import com.study.seckill.service.UserService;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService, UserService {

    @Override
    public List<User> quallAll() {
        QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
        return baseMapper.selectList(null);
    }
}

provider的application.properties

mybatis-plus.type-aliases-package=com.study.seckill.entity
mybatis-plus.global.config.refresh-mapper=true
mybatis-plus.mapper-locations=classpath:/mapper/**/*.xml

provider依賴(lài)

<dependencies>
    <dependency>
      <groupId>com.study</groupId>
      <artifactId>seckill-api</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    </dependency>


    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>3.1.1</version>
    </dependency>
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus</artifactId>
      <version>3.1.1</version>
    </dependency>
    <!--用來(lái)支持AR-->
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-generate</artifactId>
      <version>2.2.0</version>
    </dependency>
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-extension</artifactId>
      <version>3.1.1</version>
    </dependency>
    <!--自動(dòng)生成模板-->
    <dependency>
      <groupId>org.freemarker</groupId>
      <artifactId>freemarker</artifactId>
      <version>2.3.29</version>
    </dependency>

    <!--連接池-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.12</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-test</artifactId>
    </dependency>
    <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>

  </dependencies>

  <build>
    <!-- 添加資源 -->
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <!-- src/main/resources下的指定資源放行 -->
        <includes>
          <include>**/*.properties</include>
          <include>**/*.yml</include>
          <include>**/**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>
  </build>
</project>

provider工程需要配置druid數(shù)據(jù)源,不然會(huì)報(bào)異常,這里不再贅述。

總結(jié)

在搭建工程上踩了兩天坑。以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • maven profile自動(dòng)切換環(huán)境參數(shù)的2種方法詳解

    maven profile自動(dòng)切換環(huán)境參數(shù)的2種方法詳解

    這篇文章主要給大家介紹了關(guān)于maven profile自動(dòng)切換環(huán)境參數(shù)的2種方法,文中通過(guò)示例代碼將這兩種方法介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • springboot+springsecurity+mybatis+JWT+Redis?實(shí)現(xiàn)前后端離實(shí)戰(zhàn)教程

    springboot+springsecurity+mybatis+JWT+Redis?實(shí)現(xiàn)前后端離實(shí)戰(zhàn)教程

    這篇文章主要介紹了springboot+springsecurity+mybatis+JWT+Redis?實(shí)現(xiàn)前后端離實(shí)戰(zhàn)教程,需要的朋友可以參考下
    2024-01-01
  • Java中枚舉類(lèi)型的一種使用方式

    Java中枚舉類(lèi)型的一種使用方式

    這篇文章主要介紹了Java中枚舉類(lèi)型的一種使用方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • java 數(shù)據(jù)結(jié)構(gòu)之棧與隊(duì)列

    java 數(shù)據(jù)結(jié)構(gòu)之棧與隊(duì)列

    這篇文章主要介紹了java 數(shù)據(jù)結(jié)構(gòu)之棧與隊(duì)列的相關(guān)資料,這里對(duì)java中的棧和隊(duì)列都做出實(shí)現(xiàn)實(shí)例來(lái)幫助大家理解學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考下
    2017-07-07
  • mybatis-plus中wrapper的用法實(shí)例詳解

    mybatis-plus中wrapper的用法實(shí)例詳解

    本文給大家介紹了mybatis-plus中wrapper的用法,包括條件構(gòu)造器關(guān)系、項(xiàng)目實(shí)例及具體使用操作,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • Spring Boot JPA訪(fǎng)問(wèn)Mysql示例

    Spring Boot JPA訪(fǎng)問(wèn)Mysql示例

    本篇文章主要介紹了Spring Boot JPA訪(fǎng)問(wèn)Mysql示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • Mybatis事務(wù)如何跟Spring結(jié)合(數(shù)據(jù)庫(kù)事務(wù)特性和Spring事務(wù)管理源碼)

    Mybatis事務(wù)如何跟Spring結(jié)合(數(shù)據(jù)庫(kù)事務(wù)特性和Spring事務(wù)管理源碼)

    MyBatis與Spring的事務(wù)結(jié)合主要是通過(guò)Spring的事務(wù)管理和MyBatis的數(shù)據(jù)庫(kù)操作來(lái)實(shí)現(xiàn)的,在本文中,我們將從數(shù)據(jù)庫(kù)事務(wù)特性和Spring事務(wù)管理源碼兩個(gè)角度來(lái)分析MyBatis事務(wù)如何與Spring結(jié)合到一起的原理,感興趣的朋友一起看看吧
    2024-01-01
  • MybatisPlus 插入或更新數(shù)據(jù)時(shí)自動(dòng)填充更新數(shù)據(jù)解決方案

    MybatisPlus 插入或更新數(shù)據(jù)時(shí)自動(dòng)填充更新數(shù)據(jù)解決方案

    本文主要介紹了MybatisPlus 插入或更新數(shù)據(jù)時(shí)自動(dòng)填充更新數(shù)據(jù)解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Swagger2配置Security授權(quán)認(rèn)證全過(guò)程

    Swagger2配置Security授權(quán)認(rèn)證全過(guò)程

    這篇文章主要介紹了Swagger2配置Security授權(quán)認(rèn)證全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Spring Boot Gradle發(fā)布war到tomcat的方法示例

    Spring Boot Gradle發(fā)布war到tomcat的方法示例

    本篇文章主要介紹了Spring Boot Gradle發(fā)布war到tomcat的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03

最新評(píng)論