码迷,mamicode.com
首页 > 移动开发 > 详细

Spring boot + mybatis 只读取到一个jar包中的mapper配置文件

时间:2019-01-29 20:45:16      阅读:561      评论:0      收藏:0      [点我收藏+]

标签:indexof   typealias   xen   port   ons   ack   assert   ref   factor   

采用spring boot  开发了一个多模块项目,有多个模块中都有mapper配置文件。

采用如下的方式配置,制度去到了一个模块jar包中配置文件:

  @Bean(name = "sqlSessionFactory")
    public SqlSessionFactory sqlSessionFactoryBean() {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        bean.setTypeAliasesPackage("tk.mybatis.springboot.model");
        MybatisInterceptor interceptor = new MybatisInterceptor();
        bean.setPlugins(new Interceptor[]{interceptor});

        //添加XML目录
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        try {
            //\com\tritrust\t\core\dict\sqlmap
            //\com\tritrust\t\system\sqlmap
            bean.setMapperLocations(resolver.getResources("classpath:com/tritrust/t/**/sqlmap/*.xml"));
            return bean.getObject();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }

 

需要读取多个jar里面的配置需要修改配置路径为:

bean.setMapperLocations(resolver.getResources("classpath*:com/tritrust/t/**/sqlmap/*.xml"));
classpath*:就可以读取多个jar里面文件了。

查看spring core 中org.springframework.core.io.support.PathMatchingResourcePatternResolver类有如下代码:
    public Resource[] getResources(String locationPattern) throws IOException {
        Assert.notNull(locationPattern, "Location pattern must not be null");
        if (locationPattern.startsWith("classpath*:")) {
            return this.getPathMatcher().isPattern(locationPattern.substring("classpath*:".length())) ? this.findPathMatchingResources(locationPattern) : this.findAllClassPathResources(locationPattern.substring("classpath*:".length()));
        } else {
            int prefixEnd = locationPattern.startsWith("war:") ? locationPattern.indexOf("*/") + 1 : locationPattern.indexOf(58) + 1;
            return this.getPathMatcher().isPattern(locationPattern.substring(prefixEnd)) ? this.findPathMatchingResources(locationPattern) : new Resource[]{this.getResourceLoader().getResource(locationPattern)};
        }
    }

 



 

Spring boot + mybatis 只读取到一个jar包中的mapper配置文件

标签:indexof   typealias   xen   port   ons   ack   assert   ref   factor   

原文地址:https://www.cnblogs.com/sandyyeh/p/10335116.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!