2016-04-07 21 views
0

Spring Boot bağlantımı oluşturmadan önce yürütmek olacak bir fasulye oluşturmanız gerekir, bu yüzden bu 2 @Config benim lbs'nin oluşturmak zorundaOtomatik yapılandırma ile Bahar Boot

@Configuration 
@EnableJpaRepositories(entityManagerFactoryRef = "dbregistroEntityManagerFactory",basePackages = {"br.com.lumera.repositories.registro"}) 
@EnableTransactionManagement 
public class DbRegistroConfig { 

    @Bean(name = "dbRegistroDataSource") 
    @ConfigurationProperties(prefix = "datasource.dbregistro") 
    public DataSource secondaryDataSource(){ 
     return DataSourceBuilder.create().build(); 
    } 

    @Bean(name = "dbregistroEntityManagerFactory") 
    public LocalContainerEntityManagerFactoryBean dbregistroEntityManagerFactory(
      EntityManagerFactoryBuilder builder, @Qualifier("dbRegistroDataSource") DataSource dbRegistroDataSource) { 
     return builder 
       .dataSource(dbRegistroDataSource) 
       .packages("br.com.lumera.entity.registro") 
       .persistenceUnit("dbregistro") 
       .build(); 
    } 
    @Bean(name = "dbregistroTransactionManager") 
    public JpaTransactionManager dbRegistroTransactionManager(@Qualifier("dbregistroEntityManagerFactory") final EntityManagerFactory factory) 
    { 
     return new JpaTransactionManager(factory); 
    } 
} 

VE

@Configuration 
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactory", basePackages = {"br.com.lumera.repositories.dnaso"}) 
@EnableTransactionManagement 
public class DbDnasoConfig { 

    @Bean(name = "dataSource") 
    @Primary 
    @ConfigurationProperties(prefix = "datasource.dnaso") 
    public DataSource primaryDataSource() { 
     return DataSourceBuilder.create().build(); 
    } 

    @Bean(name = "entityManagerFactory") 
    @Primary 
    public LocalContainerEntityManagerFactoryBean dbdnasoEntityManagerFactory(
      EntityManagerFactoryBuilder builder, @Qualifier("dataSource") DataSource dataSource) { 
     return builder 
       .dataSource(dataSource) 
       .packages("br.com.lumera.entity.dnaso") 
       .persistenceUnit("dbdnaso") 
       .build(); 
    } 
    @Bean(name = "transactionManager") 
    @Primary 
    public JpaTransactionManager dbRegistroTransactionManager(@Qualifier("entityManagerFactory") final EntityManagerFactory factory) 
    { 
     return new JpaTransactionManager(factory); 
    } 
} 

@Component 
@AutoConfigureOrder 
@ConditionalOnClass(DataSourceAutoConfiguration.class) 
@ConfigurationProperties(prefix="dbdanso.flyway") 
@AutoConfigureBefore(DataSourceAutoConfiguration.class) 
public class FlywayConf { 
    private String url; 

    public String getUrl() { 
     return url; 
    } 

    public void setUrl(String url) { 
     this.url = url; 
    } 

    @Bean 
    public Boolean teste(){ 
     Flyway flyway = new Flyway(); 
     flyway.setDataSource("jdbc:postgresql://localhost:5432/portalservicos","postgres","dna44100"); 
     flyway.setBaselineOnMigrate(true); 
     flyway.setLocations("classpath:db/migration/dbdnaso"); 
     flyway.migrate(); 
     return true; 
    } 

} 

ama benim DbRegistroConfig ve DbDnasoConfig a sonra yürütün: sonra autoconfigurate ile benim sınıf oluşturmak Nothing bana yardım edebilir?

+0

Bu bağlantıya bakın: [Spring Boot otomatik yapılandırma sırası] (http://stackoverflow.com/questions/31692905/spring-boot-auto-configuration-order). Özellikle, "... @OutoConfigureOrder, oluşturdukları fasulyelerin somutlaştırılması değil, otomatik yapılandırmalar sipariş etmenin bir başka aracıdır". Ayrıca bkz. [Spring Boot Service Bean Oluşturma Sırası] (http://stackoverflow.com/questions/33874095/java-spring-boot-service-bean-creation-order) – paulsm4

+0

Yapılandırma her zaman bileşenlerden önce gerçekleşmiyor mu? Yapılandırma fasulyesinden önce flywayConf fasulyesini yaratmaya çalışıyorsunuz. Bunu yapmak için, Yapılandırma ile işaretlenmiş bir sınıf içinde flywayConf bean yaratmanız ve oradan siparişi gerçekleştirmeniz gerektiğini düşünüyorum. – pczeus

+0

temel olarak, DbRegistroConfig ve DbDnasoConfig'den önce FlaywayConf'u çalıştırmak istiyorsunuz. Bu doğru mu? – Hareesh

cevap

0

Yay, bir Otomatik Yapılandırma veya normal POJO sınıfının olup olmadığı konusunda rahatsızlık vermiyor. Konfigürasyonları arar ve fasülyede verilen konfigürasyona göre fasülyeyi oluşturur.

, DbRegistroConfig ve DbDnasoConfig önce FlywayConf çalıştırmak DbRegistroConfig ve DbDnasoConfig ait @DependsOn Annoatation @Bean seviyesini ekleyin.

İlgili konular