一、背景介绍
接手前人项目,代码都是一块一块的,很多个spring boot服务,服务器重新启动一下,就要同时再启动很多jar服务,漏一个就麻烦了(虽然有一键启动)。但是有很多终端黑框很是麻烦。领导要求整合成一个,再加个权限认证。特喵的
- AA_service
- BB_service
- CC_service
- DD_service
- .....
最先想到就是再搞一个把这几个都加到Maven依赖里面就OK了,啥也不用改,哈哈哈哈。由此开启了踩坑之路。新建一个All_service
二、启动的问题
1、bean冲突
虽然是不同的项目但是里面的对象很多是名字一样的,spring boot的对象自动注册里面是根据名称的。类名字一样就不行了,这个没办法,遇到就一个一个改
2、启动不了
在新的All_service 的启动类上面加上注解扫描其他的包
@EnableAsync
@SpringBootApplication
@ComponentScan(basePackages = {"cn.com.Aa", "cn.com.Bb", "cn.com.Cc"})
@EnableScheduling
public class AllServiceApplication{
public static void main(String[] args) {
SpringApplication.run(AllServiceApplication.class, args);
}
}
3、jar依赖不了
默认情况 mvn clean package 该命令会打包spring boot项目,将会打包一个XXX.jar 和一个XXX.jar.original * XXX.jar : 是一个可以执行的jar 也即 java -jar XXX.jar 就可以直接执行 * XXX.jar.original : 不可以直接执行,但是可以被其他项目引用,作为依赖jar包(去掉结尾的.original) ## 注意 被依赖的jar 需要在pom.xml 里面的打包插件 plugin 加入
<classifier>exec</classifier>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
再次打包 mvn clean package 就会有一个XXX.jar 文件和一个XXX-exec.jar 文件 * XXX.jar : 是一个可以被依赖的jar(被转变了) * XXX-exec.jar : 是一个可以执行的jar了
三、配置文件的问题
spring:
config:
# 所有spring boot的配置文件,去掉数据库链接方式,去掉端口,去掉路由前缀
import:
- classpath:yml/application-AA.yml
- classpath:yml/application-BB.yml
- classpath:yml/application-CC.yml
- classpath:yml/application-DD.yml
四、冲突的问题
第三方依赖的问题
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>${project.basedir}/lib</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>*.jar</include>
</includes>
</resource>
</resources>