2016-06-30 4 views
0

springboot를 사용하여 응용 프로그램을 시작할 때 예외가 발생합니다. 나는 그것에 대해 모른다.확인할 수없는 순환 참조가 있습니까

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

시도는 데이터 소스의 봄 부팅의 자동 구성을 전환 : 여기

@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; 

입니다. 주 @Configuration 클래스에 다음을 추가하십시오.

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

대단히 고마워, 문제는 sloved되었습니다 – sunnyhelloworldjava

+0

이 경우 올바른 대답으로 내 대답을 수락 하시겠니? – Nikem

관련 문제