簡體   English   中英

BeanCurrentlyInCreationException Spring Boot

[英]BeanCurrentlyInCreationException Spring Boot

我怎么能修復這個例外?

沒有Spring Boot一切正常。

所以問題出現在“App”部分,對不對?

抓到了異常

BeanCurrentlyInCreationException: Error creating bean with name 'pooledConnectionFactory': 
Requested bean is currently in creation: Is there an unresolvable circular reference?

應用

@ComponentScan
@EnableAutoConfiguration
@ImportResource("classpath:contexts/bean-locations.xml")
public class MyApp{
public static void main(String[] args) throws Exception {
    new SpringApplication(MyApp.class).run(args);
}
}

通過導入Bean使用

<import resource="classpath*:contexts/database/datasource/base-data-source.xml"/>
<import resource="classpath*:contexts/database/datasource/pooled-data-source.xml"/>

導入的第一個文件:

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://www.springframework.org/schema/beans"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.2.xsd">
<bean id="baseDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${connection.driverClassName}"/>
    <property name="username" value="${connection.userName}"/>
    <property name="password" value="${connection.password}"/>
    <property name="url" value="${connection.url}"/>
</bean>

導入的第二個文件:

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://www.springframework.org/schema/beans"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.2.xsd">
<bean id="pool" class="org.apache.commons.pool.impl.GenericObjectPool">
    <property name="minEvictableIdleTimeMillis"><value>300000</value></property>
    <property name="timeBetweenEvictionRunsMillis"><value>60000</value></property>
</bean>

<bean id="dataSourceConnectionFactory" class="org.apache.commons.dbcp.DataSourceConnectionFactory">
    <constructor-arg><ref bean="baseDataSource"/></constructor-arg>
</bean>

<bean id="pooledConnectionFactory" class="org.apache.commons.dbcp.PoolableConnectionFactory">
    <constructor-arg index="0"><ref bean="dataSourceConnectionFactory"/></constructor-arg>
    <constructor-arg index="1"><ref bean="pool"/></constructor-arg>
    <constructor-arg index="2"><null/></constructor-arg>
    <constructor-arg index="3"><null/></constructor-arg>
    <constructor-arg index="4"><value>false</value></constructor-arg>
    <constructor-arg index="5"><value>true</value></constructor-arg>
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp.PoolingDataSource"
      depends-on="pooledConnectionFactory">
    <constructor-arg><ref bean="pool"/></constructor-arg>
</bean>

Spring Boot具有數據庫初始化功能,與您的DataSource配置沖突。 請參見DataSourceInitializer類。 它嘗試在創建之前獲取數據源。

要修復您的應用,您可以

  1. 使用屬性禁用初始化程序

     spring.datasource.initialize=false 
  2. 排除數據源自動配置,因為您有自己的配置

     @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM