将Spring MVC应用程序转换为Spring Boot - BeanCurrentlyInCreationException问题

时间:2016-10-09 12:00:55

标签: spring hibernate spring-mvc spring-boot

我有一个Spring MVC应用程序,使用Hibernate进行实体持久性管理。我能够在一些应用服务器上构建,部署和运行它,例如glashfish或tomcat,一切都很好。

现在,我想将其转换为Spring Boot应用程序。我添加了以下课程:

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(String[] args) {
        ConfigurableApplicationContext context = 
                            SpringApplication.run(Application.class, args);
    }
}

并添加 spring-boot spring-boot-autoconfigure spring-boot-starter-tomcat 依赖于我的pom。

唉,在尝试运行应用程序时,我收到以下错误:

BeanCurrentlyInCreationException: Error creating bean with name
'MyClassDAO': Bean with name 'MyClassDAO' has been injected into 
other beans [MyOtherClassDAO] in its raw version as part of a circular
reference, but has eventually been wrapped. This means that said other
beans do not use the final version of the bean. This is often the result
of over-eager type matching - consider using 'getBeanNamesOfType' with 
the 'allowEagerInit' flag turned off, for example.

我不知道如何使用' getBeanNamesOfType'并设置 allowEagerInit (我不使用XML配置)。当然,我不确定这会解决我的问题。

关于如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

如果确实是一些导入问题,那么我相信您必须将您的类放在其他软件包中,并且由于某些缓存问题,它不包含要在容器中扫描的类路径中的那些类,因此可以手动执行此操作@springbootapllication下方的注释是@EnableComponentScan(“输入未初始化的类的包名称”),也可以在dao类上放置@service或@component注释,以使应用程序随后包含在容器中