场景:
不管什么原因,A项目服务就是引用了jar spring-boot-starter-web:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
所以项目一启动,就会去找 server.port 端口了。
找到,使用,占用。
如果我们没配置 server.port 也会默认去找8080 。
需要解决:
不给这个 A 项目 服务 占用 端口。
因为这个不是一个web服务(比如是一个dubbo接口服务等)。
总而言之,就是不想给这个服务用web端口。
解决方案:
第一种
在配置文件加上:
spring: main: allow-bean-definition-overriding: true web-application-type: none
第二种
在启动类设置 setWebApplicationType
public static void main(String[] args) { new SpringApplicationBuilder(Application .class) .web(WebApplicationType.NONE) .run(args); }
或
public static void main(String[] args) { try { SpringApplication app = new SpringApplication(JCtestyApplication.class); app.setWebApplicationType(WebApplicationType.NONE); app.setBannerMode(Banner.Mode.CONSOLE); app.setBanner(new ResourceBanner(new ClassPathResource("config/banner.txt"))); app.run(args); } catch (Exception e) { e.printStackTrace(); } }
如: