繁体   English   中英

使用Spring Boot自动配置

[英]Autoconfiguration with Spring Boot

我需要创建一个将在Spring Boot创建我的连接之前执行的bean,所以我有这个2 @Config来创建我的数据库

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

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

然后,我使用autoconfigurate创建我的课程:

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

}

但是他在我的DbRegistroConfig和DbDnasoConfig之后执行,有人可以帮助我吗?

Spring并不关心它是AutoConfiguration还是普通的POJO类。 它仅查找配置,并根据在bean级别给出的配置创建bean。

DbRegistroConfigDbDnasoConfig之前运行FlywayConf,添加@DependsOnDbRegistroConfigDbDnasoConfig的Annoatation @Bean水平。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM