版权声明:欢迎转载,注明作者和出处就好!如果不喜欢或文章存在明显的谬误,请留言说明原因再踩哦,谢谢,我也可以知道原因,不断进步! https://blog.csdn.net/csonst1017/article/details/85165463

最近在改一个项目,给这个项目套springboot框架,打算把项目所有的功能模块要用到的配置文件和工具类放到一个独立的module里(以下简称framework),其他module读取使用(省去了重复编写的麻烦),途中遇到很多问题,经过几个小时的琢磨,终于可以读取共享了。这里把几个关键点列出来,出错的都在这几个地方。

1.首先是springboot核心配置文件问题,我是用yml文件配置的,用properties也是一样的。
思路:把把公共module"framework"所需要的配置写在自己的module里,如图。

注意!!!
配置文件一定要以application-XX的形式命名,不然后续配置无法识别!
打勾的是一定要配的!!!profiles: utils表示给这个配置文件起名为utils(一定要和文件名扩展名一样)。

思路:其他module的yml需要读取公共module的yml,那么需要在其他module的yml配置:

我这里只写了两个模块(framework和system),因为system这个模块是启动入口所以我直接命名application,然后再profiles属性里添加:include(或active): utils,就可以引入application-utils.yml文件的所有内容了(如果是2个有扩展名的yml配置文件之间读取的话用active会报错,只能用include),如果system模块有独立的配置也可以在application.yml后面添加,提高扩展性。

2.包的命名问题

所有module的包都要以相同的包开始,然后再在里面建各自的包。这是强制性要求,这不仅涉及到不同module的依赖相互识别问题,也涉及到父module和子module的pom关系(见下图),也方便配置文件中配置包的扫描能够在不同module条件下扫描到所有module的包。



最上面那个是父module,下面两张分别是framework和system。

3.SpringBootApplication启动类问题

framework公共module的启动类需要删除,因为不需要在工具module里启动。一般都是在web层的module启动,我这里就把system当做web的module了。
注意:启动类一定要与起始包(com.likemoney)同级!!!不然会启动错误!扫不到包!!!

4.依赖问题

在system这个module的pom里需要导入公共module framework的依赖,否则将无法使用framework里的类。

5.xml文件共享读取问题

mybatis的xml共享读取问题:

xml文件一般都是mybaits的mapper的xml,这里我们需要在framework里写一个配置数据源的config类,在这个类里面扫描mapper.xml,如果这个没有配置好的话会出现autowired无法织入mapper接口的情况。

*** 啊里巴巴druid数据连接池配置** @author gj* @date 2018/12/19*/
@Configuration
@MapperScan(basePackages = DataSourceConfig.PACKAGES, sqlSessionFactoryRef = "dataSqlSessionFactory")
public class DataSourceConfig {static final String PACKAGES = "com.likemoney.dao.mapper";private static final String MAPPER_LOCAL = "classpath*:mybatis/mapper/*.xml";@ConfigurationProperties("spring.datasource.druid")@Bean(name = "dataDataSource")public DruidDataSource druidDataSource() {return new DruidDataSource();}@Bean(name = "dataTransactionManager")public DataSourceTransactionManager dataSourceTransactionManager() {return new DataSourceTransactionManager(druidDataSource());}@Bean(name = "dataSqlSessionFactory")public SqlSessionFactory dataSqlSessionFactory(@Qualifier("dataDataSource") DataSource dataSource) throws Exception {final SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dataSource);sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(MAPPER_LOCAL));return sqlSessionFactoryBean.getObject();}}

把配置数据源的类写在公共module framework里,那么所有的module的mapper.xml和对应接口都能扫描到(图片当中MAPPER_LOCAL变量写错了,应该在classpath后面加个"*",这样才能多module之间互相读取,请以代码块为准)。

其他xml共享读取的问题:
其他类型xml需要把路径写进yml才行(或者properties)。
这里举例mybatis-config.xml和logback-spring.xml。

以classpath:XX/XX.xml的形式写进yml(或者properties)就行了。注意是以resources为根目录开始写,其他module必须include该utils配置文件(请看第一步)。

6.test里的启动类需要删除(打包)

test/java里默认是会有一个test启动类,如果需要把整个项目打包的话(开发项目都要),是要把它删除的,不然会启动不了springboot。

总结:这些问题是在我开发项目的时候遇到的,我在这里只是提个思路,并不代表你用了我的方法就一定能读取了,欢迎各位在评论里跟我进行讨论,必回。

使用IDEA开发springboot多module模块项目的配置文件的共享读取问题相关推荐

  1. SpringBoot+Maven 多模块项目的构建、运行、打包实战

    https://www.jb51.net/article/140772.htm?proxy=1 这篇文章主要介绍了SpringBoot+Maven 多模块项目的构建.运行.打包实战,小编觉得挺不错的, ...

  2. Unable to start embedded container和Consider defining a bean:SpringBoot搭建多模块项目错误

    SpringBoot搭建多模块项目错误,我是参照这个网址搭建的 然后搭建过程中就遇到了一些bug:https://blog.csdn.net/hanchao5272/article/details/8 ...

  3. springboot dubbo 多模块项目dubbo提供者和消费者配置及代码

    注:本文只是介绍我成功使用springboot dubbo 多模块项目的配置及核心代码,若问题没得到解决或需要可运行的源码,文章末尾有说明. springboot集成dubbo过程坑太多,dubbo提 ...

  4. 解决springboot maven多模块项目打包的时候某个被依赖的模块报错找不到main class

    springboot maven 多模块项目打包的时候某个被依赖的模块报错 [ERROR] Failed to execute goal org.springframework.boot:spring ...

  5. SpringBoot创建多模块项目和所遇到的问题

    一:创建SpringBoot多模块项目(这里采用idea工具进行创建) 0.先说下这个项目的组织:这个项目有个以下几个模块,分别是common[公共],entity[实体类],dao[数据访问],se ...

  6. 基于SpringBoot构建分模块项目

    前言 步骤过于详细,多图慎入!!! 假设一个场景,要开发一个4s店维修部的办公系统,其功能有:前台接待,维修抢单,财务结算,库存管理.于是我们创建一个项目balabalabala写完交工. 一段时间后 ...

  7. springboot项目层次结构_【SpringBoot】多模块项目结构搭建

    前言: 必需学会SpringBoot基础知识 简介: Takes an opinionated view of building production-ready Spring application ...

  8. SpringBoot+Mybatis多模块(module)项目搭建教程

    作者:枫本非凡 cnblogs.com/orzlin/p/9717399.html 编辑:Java知音 一.前言 最近公司项目准备开始重构,框架选定为SpringBoot+Mybatis,本篇主要记录 ...

  9. springboot 模块引用_Spring Boot(三):SpringBoot多模块(module)项目搭建

    一.前言 记录在IDEA中怎么搭建SpringBoot多模块(module)的过程,以一个交党费的项目为例,多模块的目录结构如下: dajia-dangfei-api:存放实体类和一些service层 ...

最新文章

  1. android dslr控制软件,DSLR Controller
  2. Hadoop 详细配置文档
  3. 一文带你快速读懂.NET CLI
  4. 清北NOIP训练营集训笔记——图论(提高组精英班)
  5. Azure恢复服务-DPM联机备份SQL数据库
  6. 不断电系统的容量如何计算?
  7. Java并发编程-线程池底层工作原理
  8. visual studio 判断dropdownlist选的是什么_测试:选一顶你觉得最漂亮的皇冠。测你长了张什么脸?我是发财脸...
  9. 剑指offer面试题[21]包含min函数的栈
  10. 三年级计算机 键盘指法 教案,人教版三年级信息技术《第一课 键盘操作再加强》教案(精品获奖)...
  11. iOS自动化测试驱动工具探索
  12. 【解决】当前操作环境不支持支付宝控件/一直处于“正在安装证书“中
  13. word文档字不靠边_Word打印字体靠右怎么办
  14. Scala编程思想高清中文版PDF
  15. Unity3D自动旋转屏幕
  16. 编译原理——证明文法的二义性(1)
  17. 设f(x)=∑x^n/n^2,证明f(x)+f(1-x)+lnxln(1-x)=∑1/n^2
  18. cordova打包app热更新问题
  19. JAVA spring定时任务
  20. python做测试小工具_自制快速冒烟测试小工具--基于python多线程(2)

热门文章

  1. 程序猿Git项目代码自动提交神器
  2. html如何显示缩略图,前端实现div(DOM)缩略图
  3. html 中的 header-作用与使用
  4. 盲图像超分辨率重建 ( CVPR,2022) (Pytorch)(附代码)
  5. 【转】木人播放器(同步歌词mp3格式)(需要jmf包)
  6. 水土保持监测,无人机倾斜摄影该如何做?
  7. 初识Dockerfile与实现容器间的数据同步
  8. C语言之printf简介
  9. 应用层与基础知识(题目完成)
  10. 信息系统管理工程师 - 2017年真题(下午卷,应用技术)考点解析