2016-06-30 8 views
0

springbootを使用してアプリケーションを起動すると、例外が発生します。私はそれについて全く知らない。ここで解決できない循環参照があります

@Bean 
@ConfigurationProperties(prefix="master.datasource") 
public DataSource master() { 
    return new org.apache.tomcat.jdbc.pool.DataSource(); 
} 

@Bean 
@ConfigurationProperties(prefix = "slave1.datasource") 
public DataSource slave1() { 
    return new org.apache.tomcat.jdbc.pool.DataSource(); 
} 

@Bean 
public DynamicDataSource dataSource() { 
    DynamicDataSource dataSource = new DynamicDataSource(); 
    dataSource.setMaster(master()); 
    List<DataSource> slaves = new ArrayList<DataSource>(); 
    slaves.add(slave1()); 
    dataSource.setSlaves(slaves); 
    return dataSource; 
} 

DynamicDataSourceクラス構造に起因

public class DynamicDataSource extends AbstractRoutingDataSource { 
    private final Logger log = LoggerFactory.getLogger(this.getClass()); 
    private AtomicInteger counter = new AtomicInteger(); 
    private DataSource master; 
    private List<DataSource> slaves; 

です:

org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'dataSource': Requested bean is currently in creation: Is there an unresolvable circular reference? 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.beforeSingletonCreation(DefaultSingletonBeanRegistry.java:347) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:220) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:356) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:332) 
     at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1066) 
     at org.springframework.boot.autoconfigure.jdbc.DataSourceInitializer.init(DataSourceInitializer.java:69) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:354) 
     at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:305) 
     at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133) 
+5

質問の書式設定に時間がかかる - これはわかりやすいはずです。書式設定ツールを使用して5分の時間を費やすことができない場合は、私は確かに、この残虐行為を解読するために私の時間の5分を置くことに悩まされることはありません。天国のためにあなたのコードの途中に 'enter code here 'があります! –

答えて

5

データソースの春ブーツの自動設定をオフにしてください。メインの@Configurationクラスに次を追加してください:

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) 
+0

大変ありがとうございます、問題はスローされました – sunnyhelloworldjava

+0

この場合、私の答えを正しいものとして受け入れるかどうか気になりますか? – Nikem

関連する問題