Spring Boot 项目如何按模块进行拆分?( 三 )

DAO层项目中无非就是MApper映射的接口以及Mapper.xml文件,而数据库驱动在父项目已经引入了,所以我们只需要引入Model项目即可
yml配置spring:datasource:druid:username: usernamepassword: passworddriver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriverurl: databaseUrlinitial-size: 5min-idle: 5max-active: 20aop:auto: trueproxy-target-class: trueproject:version: '@project.version@'mybatis-plus:# resource目录 classpath:/mapper/*Mapper.xmlmapper-locations: classpath:/mapper/*Mapper.xml# 实体类 包扫描type-aliases-package: com.youxue.demo.modelglobal-config:db-config:db-type: sql_server#数据库大写下划线转换#capital-mode: trueconfiguration:# 数据库关闭缓存cache-enabled: false# 开启下划线转换驼峰命名 例 :(modelString userName, SQLselect user_name from userInfo)map-underscore-to-camel-case: truejdbc-type-for-null: 'null'# 开启控制台SQL打印log-impl: org.apache.ibatis.logging.stdout.StdOutImpl数据库相关配置完成之后我们直接创建Mapper接口就行了,如下:

Spring Boot 项目如何按模块进行拆分?

文章插图
 
随后在service项目中创建对应的service以及impl:
Spring Boot 项目如何按模块进行拆分?

文章插图
 
service层中我们需要依赖DAO层项目以及Model项目,并且可能会使用到一些工具类,所以还需要添加依赖:
<dependencies><dependency><groupId>com.youxue</groupId><artifactId>demo-common</artifactId><version>${project.version}</version></dependency><dependency><groupId>com.youxue</groupId><artifactId>demo-dao</artifactId><version>${project.version}</version></dependency><dependency><groupId>com.youxue</groupId><artifactId>demo-model</artifactId><version>${project.version}</version></dependency></dependencies>因为我们的启动项目为Admin项目,所以我们所有的Controller都放在这个项目
Spring Boot 项目如何按模块进行拆分?

文章插图
 
而Admin项目作为启动项目,接口调用的响应结果肯定需要依赖Model层以及Service层,所以我们把依赖加入进来
这里需要注意的是,Admin项目需要引入spring-boot-starter-Tomcat来提供访问支持
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency><dependency><groupId>com.youxue</groupId><artifactId>demo-model</artifactId><version>${project.version}</version></dependency><dependency><groupId>com.youxue</groupId><artifactId>demo-service</artifactId><version>${project.version}</version></dependency></dependencies>重点来了!!!!
启动项目(踩过的坑)@SpringBoot注解,@MapperScan注解 的包扫描机制
大家肯定都知道,需要写入对应的包路径,此时我的Application是这样的
Spring Boot 项目如何按模块进行拆分?

文章插图
 
是不是看起来有模有样的,好像没啥问题子项目相互依赖,各方面的引入也没啥问题,然而启动后:
Spring Boot 项目如何按模块进行拆分?

文章插图
 
啥玩意??? 数据库url属性没有配置?咱们可是在DAO项目中配置的好好的,可是为啥这里仿佛没有用?
其实是因为没有加载到DAO层项目的yml文件,导致了启动时无法识别到数据库相关配置导致Spring抛出了这个异常,那么怎么解决呢?
其实非常简单,我们都知道SpringBoot是支持多配置文件例如:application-dev.yml、application-prod.yml、application-local.yml
我们需要在Admin启动项目的配置文件中引入DAO层项目的数据库配置就行了
Spring Boot 项目如何按模块进行拆分?

文章插图
 

Spring Boot 项目如何按模块进行拆分?

文章插图
 
随即项目启动成功!是不是很棒,咱们来访问一下Controller层的接口查看一下效果
Spring Boot 项目如何按模块进行拆分?

文章插图
 
访问时是不是感觉与单一架构差不多?然后我们其实已经将DAO、Service、Controller整个三层架构拆分为三个子项目,甚至将Model、Common都拆分为独立的子项目,作者当前公司就是拆分成这样的,是不是很细?
原文链接:


推荐阅读