2016-05-18 8 views
0

Ich verwende zwei verschiedene Datenbanken für meine Frühling Winterschlaf-Anwendung.Mehrere DB-Konfiguration in Java-Frühling wirft Ausnahme

Ich habe zwei Persistenzkonfigurationsdatei zum Erstellen von zwei Sitzungsfactory definiert. Wenn ich die Servlet-Container starten wirft es unter Ausnahme

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'transactionManager' defined in class path resource 

PersistenceConfig1

@Configuration 
@EnableTransactionManagement 
@PropertySource({ "classpath:persistence.properties" }) 
@ComponentScan({ "com.test.test2.*" }) 
public class PersistenceConfiguration1 { 

    @Autowired 
    private Environment env; 

    @Bean(name="fSessionFactory") 
    public LocalSessionFactoryBean sessionFactory() { 
     LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); 
     sessionFactory.setDataSource(testDataSource()); 
     sessionFactory.setPackagesToScan(new String[] { 
       " com.test.test2"}); 
     sessionFactory.setHibernateProperties(hibernateProperties1()); 

     return sessionFactory; 
    } 

    @Bean 
    public DataSource testDataSource() { 
     BasicDataSource dataSource = new BasicDataSource(); 
     dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName")); 
     dataSource.setUrl(env.getProperty("jdbc.url")); 
     dataSource.setUsername(env.getProperty("jdbc.user")); 
     dataSource.setPassword(env.getProperty("jdbc.pass")); 

     return dataSource; 
    } 

    @Bean 
    @Autowired 
    public HibernateTransactionManager transactionManager(
      SessionFactory sessionFactory) { 
     HibernateTransactionManager txManager = new HibernateTransactionManager(); 
     txManager.setSessionFactory(sessionFactory); 

     return txManager; 
    } 

    @Bean 
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { 
     return new PersistenceExceptionTranslationPostProcessor(); 
    } 

    Properties hibernateProperties1() { 
     return new Properties() { 
      { 
       setProperty("hibernate.hbm2ddl.auto", 
         env.getProperty("hibernate.hbm2ddl.auto")); 
       setProperty("hibernate.dialect", 
         env.getProperty("hibernate.dialect")); 
       setProperty("hibernate.globally_quoted_identifiers", "true"); 
      } 
     }; 
    } 
} 

Persistenz Config 2

@Configuration 
@EnableTransactionManagement 
@PropertySource({ "classpath:persistence.properties" }) 
@ComponentScan({ "com.test.test3.*" }) 
public class PersistenceConfigurationDOTC { 

    @Autowired 
    private Environment env; 

    @Bean(name="dSessionFactory") 
    public LocalSessionFactoryBean sessionFactory() { 
     LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); 
     sessionFactory.setDataSource(test1DataSource()); 
     sessionFactory.setPackagesToScan(new String[] { 
       "com.test.test3.entity"}); 
     sessionFactory.setHibernateProperties(hibernateProperties()); 

     return sessionFactory; 
    } 

    @Bean 
    public DataSource test1DataSource() { 
     BasicDataSource dataSource = new BasicDataSource(); 
     dataSource.setDriverClassName(env.getProperty("jdbc1.driverClassName")); 
     dataSource.setUrl(env.getProperty("jdbc1.url")); 
     dataSource.setUsername(env.getProperty("jdbc1.user")); 
     dataSource.setPassword(env.getProperty("jdbc1.pass")); 

     return dataSource; 
    } 


    Properties hibernateProperties() { 
     return new Properties() { 
      { 
       setProperty("hibernate.hbm2ddl.auto", 
         env.getProperty("hibernate.hbm2ddl.auto")); 
       setProperty("hibernate.dialect", 
         env.getProperty("hibernate.dialect")); 
       setProperty("hibernate.globally_quoted_identifiers", "true"); 
      } 
     }; 
    } 
} 

Wenn ich auch zwei Transaktions-Manager definiert im, Ausnahme zu bekommen. Hilf mir bei der Konfiguration von zwei Transaktionsmanagern in einer Spring-Hibernate-Anwendung.

+0

Bitte beachten Sie diesen Beitrag http://stackoverflow.com/questions/37248159/spring-mvc-multiple-entities-database-persistance/37248318?noredirect=1#comment62027042_37248318 – shankarsh15

+0

@ shankarsh15 ich alle Session/Datenquelle am definieren in Java anstelle von XML – Ramkumar

+0

werfen Sie einen Blick auf diesen Beitrag auch http://StackOverflow.com/Questions/26308035/spring-boot-spring-Data-Jpa-mit-Multiple-Datasources – shankarsh15

Antwort

0

Möchten Sie einen einzigen Transaktionsmanager für beide Konfigurationen? Oder bevorzugen Sie eine Mehrfachkonfiguration? Versuchen Sie, den Transaktionsmanager auch in Ihrer Persistence Config 2 zu definieren.

+0

Wenn ich zwei Transaktion definiert, die ich bekomme unter Ausnahme Es wurde keine berechtigende Bean vom Typ [org.hibernate.SessionFactory] definiert: erwartete einzelne übereinstimmende Bean, aber 2-Sitzungs-Factory gefunden – Ramkumar