zoukankan      html  css  js  c++  java
  • 最近走过的坑 :slf4j 多个实现 hibernate 类型转换异常 bean依赖问题

    最近走过的坑

    slf4j 多个实现

    主要是maven依赖中存在多个slf4j的实现类,在引入的依赖中排除对应的依赖就可以

    <dependency>
        <groupId>xxxxxx</groupId>
        <artifactId>xxxxxx</artifactId>
        <version>1.0.0</version>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-slf4j-impl</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
            <exclusion>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

    另外对于spring-boot来讲,可以这样排除,子项目就可以不用排除了,不过log-back还算好用,个人更喜欢用spring-boot全家桶

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

    hibernate 在启动的时候死锁

    主要排查: 1.账号密码这些问题 2.有的时候抛一些关于c3p0的异常,把这个c3p0换一个比较新的就好了
    参考:https://stackoverflow.com/questions/18100414/c3p0-apparent-deadlock-exception

    <!-- https://mvnrepository.com/artifact/c3p0/c3p0 -->
    <dependency>
        <groupId>com.mchange</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.5.2</version>
    </dependency>
    

    hibernate 类型转换异常

    描述:在spring boot中手动配置hibernate,hibernate在返回的时候可能会抛出一个类型转换异常,比如User不能转换为User

    去掉 spring-boot-dev 这个依赖就好了,原因未知(原因可能是类加载器不同,以后再研究)

    https://stackoverflow.com/questions/42767378/spring-boot-devtools-initialization-errors/42804019#42804019
    如果迫切需要解决,可以看下这个
    https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html#using-boot-devtools-customizing-classload

    bean依赖问题

    有的时候一个bean依赖另一个bean(最简单的情况就是,一个bean在构造方法中需要调用另一个bean,这个时候可能有些bean没有初始化)

    @Service
    @DependsOn(value = "mysqlClient")
    public class XXXServiceImp implements XXXService
    

    解决方案:加一个注解即可@DependsOn(value = "beanname")要注意的是,不要有循环依赖比如说 a->b b->c c->a 这种的

    另一种解决方案就是构造方法注入在给构造方法加一个自动注入的注解

    @Autowired
    public XXXServiceImp(XXXDao xxxDao)
    
  • 相关阅读:
    TreeMap
    索引
    B-树、B+树
    硬盘速度、存储方式
    2-3树
    多叉树、2-3-4树
    红黑树
    平衡树、AVL树
    树、多路树、二叉树
    Java实现后缀表达式建立表达式树
  • 原文地址:https://www.cnblogs.com/stdpain/p/10929268.html
Copyright © 2011-2022 走看看