java - @Configuration @AutoConfigureAfter @Autowired
问题描述
为什么不需要 BrokerMessageConfiguration.class @AutoConfigureAfter(value = {RabbitProducerDataSourceConfiguration.class})
但是 RabbitProducerMyBatisConfiguration.class 需要 @AutoConfigureAfter(value = {RabbitProducerDataSourceConfiguration.class})
谢谢你的回答!</p>
@Slf4j
@Configuration
@PropertySource({"classpath:rabbit-producer-message.properties"})
public class RabbitProducerDataSourceConfiguration {
@Value("${rabbit.producer.druid.type}")
private Class<? extends DataSource> dataSourceType;
@Bean(name ="rabbitProducerDataSource")
@ConfigurationProperties(prefix = "rabbit.producer.druid.jdbc")
public DataSource rabbitProducerDataSource() throws SQLException {
DataSource rabbitProducerDataSource = DataSourceBuilder.create().type(dataSourceType).build();
log.info("============= rabbitProducerDataSource : {} ================", rabbitProducerDataSource);
return rabbitProducerDataSource;
}
public DataSourceProperties primaryDataSourceProperties(){
return new DataSourceProperties();
}
public DataSource primaryDataSource(){
return primaryDataSourceProperties().initializeDataSourceBuilder().build();
}
}
2号
@Configuration
@AutoConfigureAfter(value = {RabbitProducerDataSourceConfiguration.class})
public class RabbitProducerMyBatisConfiguration {
@Resource(name= "rabbitProducerDataSource")
private DataSource rabbitProducerDataSource;
@Bean(name="rabbitProducerSqlSessionFactory")
public SqlSessionFactory rabbitProducerSqlSessionFactory(DataSource rabbitProducerDataSource) {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(rabbitProducerDataSource);
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
try {
bean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));
SqlSessionFactory sqlSessionFactory = bean.getObject();
if (sqlSessionFactory != null) {
sqlSessionFactory.getConfiguration().setCacheEnabled(Boolean.TRUE);
}
return sqlSessionFactory;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Bean(name="rabbitProducerSqlSessionTemplate")
public SqlSessionTemplate rabbitProducerSqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
3号
@Configuration
public class BrokerMessageConfiguration {
@Autowired
private DataSource rabbitProducerDataSource;
@Value("classpath:rabbit-producer-message-schema.sql")
private Resource schemaScript;
@Bean
public DataSourceInitializer initDataSourceInitializer() {
System.err.println("--------------rabbitProducerDataSource-----------:" + rabbitProducerDataSource);
final DataSourceInitializer initializer = new DataSourceInitializer();
initializer.setDataSource(rabbitProducerDataSource);
initializer.setDatabasePopulator(databasePopulator());
return initializer;
}
private DatabasePopulator databasePopulator() {
final ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
populator.addScript(schemaScript);
return populator;
}
}
为什么不需要 BrokerMessageConfiguration.class @AutoConfigureAfter(value = {RabbitProducerDataSourceConfiguration.class})
但是 RabbitProducerMyBatisConfiguration.class 需要 @AutoConfigureAfter(value = {RabbitProducerDataSourceConfiguration.class})
谢谢你的回答!</p>
解决方案
推荐阅读
- java - Kotlin:如何获取文件(IMAGE)的创建日期?
- laravel - 在 laravel 6.3 中显示调用未定义函数 setActive() 错误
- reactjs - 使用 firebase 创建两种不同类型的用户身份验证
- .net - 如何将 Webflow 制作的前端集成到 .NET Core 中?
- html - 将形状放在图标后面作为悬停状态
- azure - Terragrunt 是否可用于 Azure?
- javascript - 当我导入 React Router 时,Webpack 显示警告
- ubuntu - 在 ubuntu 服务器上使用 nginx 来自 namecheap 的 ssl 证书问题
- php - 如何在 laravel Milldeware 中向具有特定角色的用户验证特定路由
- javascript - 带有一半背景图像的页脚