• 合并分支导致的问题


            有一个模块,因底层使用的云平台不同,所以有两个分支分别对应h3c / openstack 云平台环境,但是这样导致难以维护,决定开发兼容两套云平台的sdk后(由其他同事进行完成,对于缺少的接口自行补充),使用该sdk将模块的两个分支进行合并。

            openstack分支有一个功能直接对openstack数据库进行了操作,而h3c分支并没有,如果模块切换到h3c环境后该mapperBean没有则会报错。于是使用@Conditional(x.class)注解进行有条件的使用。

    如果不是openstack环境则不注入 openstack环境的链接、会话对象,并手动注入一个空实现的mapper对象,这样其他类引入mappper对象就可以找到空实现的mapper对象,然后在其他类做判断如果不是openstack 则抛出异常提示非openstack环境该功能无法使用

    1. @Configuration
    2. @MapperScan(basePackages = "com.rs.remote.dao.nova",sqlSessionFactoryRef = "novaSqlSessionFactory")
    3. @ConditionalOnExpression("'${cloud.type}'.equals('os')")
    4. public class NovaDataSourceConfig {
    5. @ConfigurationProperties(prefix = "spring.datasource.druid.nova")
    6. @Bean(name = "novaDataSource")
    7. public DataSource getDataSource(){
    8. return DruidDataSourceBuilder.create().build();
    9. }
    10. @Bean(name = "novaSqlSessionFactory")
    11. public SqlSessionFactory novaSqlSessionFactory(@Qualifier("novaDataSource") DataSource dataSource) throws Exception {
    12. SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
    13. bean.setDataSource(dataSource);
    14. bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:com/rs/remote/dao/nova/**/mybatis/*Mapper.xml"));
    15. bean.setTypeAliasesPackage("com.rs.remote.dao.nova.model");
    16. return bean.getObject();
    17. }
    18. }
    1. @Bean
    2. @ConditionalOnExpression("'!${cloud.type}'.equals('os')")
    3. public InstanceMapper instanceMapper(){
    4. return new InstanceMapper() {
    5. @Override
    6. public void updateHostNameForInstanceByCloudId(String cloudId, String hostName) {
    7. throw new RuntimeException("非openstack环境,无法使用");
    8. }
    9. };

  • 相关阅读:
    Jenkins构建Maven项目
    deeplab v3+ 源码详解
    矩阵分析与应用+张贤达
    P14 JDBC 快速入门
    「C++小游戏教程」基本技巧(3)——发声函数 Beep()
    chatGLM-Windows环境安装
    软件测试/测试开发丨App自动化测试-弹窗异常处理
    Spring(17) AopContext.currentProxy() 类内方法调用切入
    【红外DDE算法】HE算法在红外图像可视化上的应用(附源码)
    执行sql报错only_full_group_by的解决方法
  • 原文地址:https://blog.csdn.net/qq_41149775/article/details/127869522