SpringBoot采坑总结(持续更新)

2019/04/18

简介

此篇主要介绍在平常工作中的有关springboot遇到的问题

问题

启动后直接exit code

问题 : 启动了直接关闭了没有任何打印日志,如图

img

原因 : 配置了logback.xml里面没有配置打印到控制台的模块

解决 : 修改logback.xml添加打印到控制台的

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%L] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
</appender>
<!-- 日志输出级别 -->
<root level="DEBUG">
    <appender-ref ref="STDOUT" />
</root>

属性注入失败

问题 : yml中的属性无法注入到bean中

img

原因 : yml中的属性大写了

解决 : 使用aliyun-vo替换aliyunVo


restful访问异常

问题 : java.lang.IllegalStateException: Ambiguous handler methods mapped for ‘/zhenjiang/address/town/query/1’

原因 : 但若出现方法重载的情况,则可能会出问题,及两条url链接相同

解决 : 修改url的连接


无法加载配置类

问题 : 配置了@Configuration无法生效

原因 : 不再springboot的基包中

解决 :

  1. 如果 ServerConfig不再springboot的基类包扫描中,需要在META-INF/spring.factories中配置

    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
      com.hedian.cas.config.SpringConfig
    

META-INF/spring.factories 和configration 区别

@Configuration需要在springbootapplication的基类包下

META-INF/spring.factories 不需要在springbootapplication的基类包下


jar包中的文件无法下载

问题 :

原因 : 调用的方法错误,应该使用stream的方式调用

解决 :

//原来使用的调用方法
//String filePath = this.getClass().getClassLoader().getResource("template/" + fileName).getPath();
//FileInputStream inputStream = new FileInputStream(filePath);
//应该使用的调用方法
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("template/" + fileName);//获取文件路径

整合durid数据源出错

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

img

img

原因 : springboot升级到2.X会出现此问题

img

根据报错提示在配置文件的24行,查看配置文件,该行代码是 filters: stat,wall,log4j

参考连接 : Failed to bind properties under

解决 :

方式一: 在pom中添加需要的依赖

<dependency>
   <groupId>log4j</groupId>
   <artifactId>log4j</artifactId>
   <version>1.2.17</version>
</dependency>

方式二: 将DuridConfig中的配置注释掉

img

方式三: 将springboot的版本退回2.0以下


多数据源配置未找到mapper

问题 : 多数据源配置为找到mapper

原因 : 没有添加@MapperScan注解

参考链接 :

解决 : 添加@MapperScan


在where中使用1=1 出错

问题 :

img

原因 : druid中配置了wall防火前

参考链接 : druid sql黑名单 报异常 sql injection violation, part alway true condition not allow

解决 :

将属性<property name="filters" value="config,stat,wall,log4j" />改成<property name="filters" value="config,stat,log4j" />

bean重复

问题 :

img

原因 : 两个bean的name相同

img

参考链接 :

解决 : 修改其中一个bean的名称


rediestemple类型转换错误

问题 :

img

原因 : 由于bean同名,所以导致

img

参考链接 :

解决 : 修改bean名称


LettuceConnectionFactory空指针

问题 :** 关于SpringBoot2整合Redis集群时遇到的LettuceConnectionFactory空指针问题

img

原因 : 在StringRedisTemplate对象调用setConnectionFactory()方法前,LettuceConnectionFactory对象先调用afterPropertiesSet()方法初始化。

参考链接 : 关于SpringBoot2整合Redis集群时遇到的LettuceConnectionFactory空指针问题

解决 : 添加 factory.afterPropertiesSet();


@Test注解无效

问题 :

img

原因 :

  1. 同包名下的有Test类了
  2. 该测试类没有放倒test目录下

参考链接 :

解决 :

  1. 将自定义的Test类型修改为其他

  2. 将测试类放倒test目录下

    img


@Mapper和@MappserScan注解无法同时生效

问题 : @Mapper和@MappserScan注解无法同时生效

原因 : 暂无

参考链接 :

解决 : 给MapperScan配置扫描不同包


java.lang.NoSuchFieldError: INSTANCE

问题 : java.lang.NoSuchFieldError: INSTANCE

img

原因 : 基本都是jar包冲突

参考链接 :

解决 : 删除冲突的jar

img

(本篇博文完结;中文字数一共:3083字,英文字数一共:485 字)


扫扫加关注公众号 让我们一起学习一起成长

(转载本站文章请注明作者和出处 IT超仔

Post Directory