springboot项service层单独打包
1、springboot的web项目,项目名称假设为AAA,原本的目录结构是:
现在需要把anno,pojo,service和util目录下的代码,单独放在另一个项目BBB里。项目BBB打成jar:com.test.BBB.jar,然后在项目AAA里引用这个jar,此时项目AAA中的src部分只有controller层代码和一个启动类。
2、新建一个maven项目BBB,把项目AAA中相关目录拷贝到src文件夹下,pom文件中引入相关jar,不需要build部分,这个是要注意的,否则在项目AAA中引用不到BBB里的类。
3、打包项目BBB,熟悉此过程的,跳过此步骤。
右键项目BBB,"Run As"->"maven building..."-> "clean install"(skip test)
4、将本地的BBB项目打成的jar包,导入到本地maven仓库:
mvn install:install-file -Dfile=D:workspaceBBB argetBBB-0.0.1-SNAPSHOT.jar -DgroupId=com.test -DartifactId=BBB -Dversion=0.0.1 -Dpackaging=jar
包路径,名称,groupId,artifactId等替换成自己的实际项目值。
5、在项目AAA的pom中,引入上步导入的jar:BBB-0.0.1-SNAPSHOT.jar,和导入其他jar方式一样。
6、在项目AAA中,除了controller目录和启动类以外的所有后端代码,都删除!(先备份)。
此时,controller目录下的所有文件肯定都是红叉的,因为引用的service路径已经不存在了,需要统一修改成项目BBB中的service路径。
7、启动项目AAA,此时会报错,提示无法注入@Autowired对象,原因是在启动类中,@ComponentScan扫描的路径,只有项目AAA的,没有配置项目BBB的包路径,添加上就可以了,比如原本是:@ComponentScan(basePackages = {"com.test.AAA"}),此时需要改成@ComponentScan(basePackages = {"com.test.AAA","com.test.BBB"})
8、再次启动项目AAA就完成了。
9、项目AAA的目录结构:
项目BBB的目录结构:
以上是 springboot项service层单独打包 的全部内容, 来源链接: utcz.com/z/516337.html