起因
上一篇文章(《搭建Naven私服Nexus3,并在IDEA的Springboot项目下使用》)我们讲到了如何使用Nexus搭建私服并上传相关的项目以及如何在宿主项目中使用Nexus私服的库。
现在我们回想一下我当时做这个私服有两个目的:
- 封装公共类库,以工具类和验证类为主。
- 封装权限系统,将权限系统分为带部门的审批权限系统和不带部门的浏览权限系统两种,根据具体的业务,引入不同的权限系统。
第一个目的很好实现, 上一篇文章已经带着大家实现了,问题不大,但是第二个目的,需要将一个项目的Controller Service和Mapper以及静态页面都要封装起来,并且让宿主项目可以通过pom文件的dependency就可以引入并使用,这里就面临一个问题了,如何让引入项目的Controller能起作用呢?默认Springboot是不扫描子项目的注解的呀?
解决方案
- 对于@Controller @Service @Mapper等注解的扫描问题
在你的Springboot启动类中加入注解配置文件:
@MapperScan(basePackages = “com.dhcc.manmanagement.dao”)
或
@ComponentScan({“com.dhcc.utils.controller”,”com.dhcc.manmanagement”})
就可了,这样你的子项目中的组件也可以在Springboot项目启动的时候就被扫描,并被宿主项目使用了。 - 对于html,css, js等文件
只要在子项目的resource文件夹下新建一个templates文件夹,然后将相关的资源文件放入,即可实现共用。
解决了上述问题,基本上想要封装任何共用库,就算以项目的形式封装,也不是不可能了。