• BeanCurrentlyInCreationException sqlSessionFactory Requested bean is currently in creation: Is there an unresolvable circular reference?


    Springboot项目集成h2 databse遇到的异常

    1.异常现象

    Springboot集成h2 database,h2配置如下

    spring.datasource.driver-class-name=org.h2.Driver
    spring.datasource.url=jdbc:h2:~/test
    spring.datasource.username=sa
    spring.datasource.password=sa
    spring.datasource.schema=classpath:db/*.sql
    spring.datasource.initialization-mode=always
    spring.datasource.continue-on-error=false
    
    spring.h2.console.path=/h2-console
    spring.h2.console.enabled=true

    当spring.datasource.schema配置脚本时,就会抛出异常,具体异常信息为:

    Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'sqlSessionFactory': Requested bean is currently in creation: Is there an unresolvable circular reference?

    如果不配置spring.datasource.schema的值,也就不会初始化数据库脚本,也不会抛异常。

    2.问题解决

    由于能力不足,在网上到处搜索,搜索了整整一天终于解决了。这个异常的原因看名字就能大致猜出来:Bean对象当前正在创建异常。

    由于公司用的RPC框架的注解的类都有这个异常抛出,普通@Service类都可以正常注入Bean。所以可以断定是公司RPC框架注解的问题,不能在Bean完全创建好后再注入导致的问题。

    解决办法就是在注入的属性上添加@Lazy注解,表示暂时不注入对象,等到调用该属性(接口)时再注入Bean。类似下方代码

    @公司RPC
    @Service
    public class UserService{
    
        @Lazy
        @Autowired
        private UserMapper userMapper;
    
    
        public User getById(String id){
    
             return userMapper.getById(id);
        }
    
    }        
  • 相关阅读:
    GIT学习实践笔记
    ubuntu 安装pygit2
    强化vim打造python的IDE
    Python Django学习和实践
    浏览器调试工具网页性能分析中的使用
    公司发版shell脚本重构
    Nightwatch+gulp
    Git
    JavaScript Unit Test with Qunit
    Unit Test Mocking Framework
  • 原文地址:https://www.cnblogs.com/hdwang/p/14186467.html
Copyright © 2020-2023  润新知