[英]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。
到DbRegistroConfig和DbDnasoConfig之前运行FlywayConf,添加@DependsOn的DbRegistroConfig和DbDnasoConfig的Annoatation @Bean水平。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.