2016-06-21 21 views
0

Ich versuche, eine Spring Boot-Anwendung mit einem Abhängigkeits-Jar zu erstellen, die context.xml mit mehreren Datenquellen konfiguriert hat.Spring Boot-Anwendung mit Abhängigkeit mit mehreren Datenquellen

In meiner Spring Boot-Anwendung habe ich @ImportResource ("context.xml") zur @Configuration-Klasse hinzugefügt und jetzt bekomme ich eine Ausnahme, dass "Keine qualifizierende Bean vom Typ [javax.sql.DataSource] definiert ist : erwartete einzelne übereinstimmende Bean, aber gefunden 4: XXXDataSource, YYYDataSource, ZZZDataSource, aaaaDataSource ".

Ich habe die Dokumentation zu mehreren Datenquellen in Spring Boot gelesen, konnte dieses Problem jedoch nicht beheben. Ich bin mir nicht sicher, wie ich meine Klasse konfigurieren kann, da ich das Abhängigkeitsjar nicht ändern kann, um die Art zu ändern, wie Datenquellen konfiguriert werden.

Bitte helfen!

Antwort

0

Sie können das Attribut "Primary" in Ihrer Datenquellen-Bean verwenden, damit Ihr Autowindling es standardmäßig auswählt.

<bean primary="true|false"/> 

Wenn Sie die Java-Konfiguration verwenden, verwenden Sie stattdessen die Annotation @Primary.

http://docs.spring.io/spring-framework/docs/4.0.4.RELEASE/javadoc-api/org/springframework/context/annotation/Primary.html

@Component 
public class FooService { 
    private FooRepository fooRepository; 

    @Autowired 
    public FooService(FooRepository fooRepository) { 
     this.fooRepository = fooRepository; 
    } 
} 

@Component 
public class JdbcFooRepository { 
    public JdbcFooService(DataSource dataSource) { 
     // ... 
    } 
} 

@Primary 
@Component 
public class HibernateFooRepository { 
    public HibernateFooService(SessionFactory sessionFactory) { 
     // ... 
    } 
} 

Wenn dies immer noch das Problem nicht beheben, können Sie die Bohne, den Namen und die @Qualifier Anmerkung in Ihren Java-Klassen verwenden, oder verwenden Sie das „ref“ Attribut in Ihrem Spring-XML Aufbau.

https://spring.io/blog/2014/11/04/a-quality-qualifier

@Autowired 
@Qualifier("ios") // the use is unique to Spring. It's darned convenient, too! 
private MarketPlace marketPlace ; 

Wenn Sie benötigen einen der Datenquellen in das Glas und sind nicht in der Lage, die Konfiguration zu ändern, anstatt die XML aus dem Glas zu importieren, kopieren Sie die Konfigurationen, die Sie in Ihre eigene lokale Feder Kontext benötigen Aufbau.

+0

Das Hinzufügen von zu einer der Datenquellen-Bean in der context.xml des Abhängigkeits-Jars hat den Zweck erfüllt! Danke vielmals!!!!!!! – Nitin