解决:
在springboot项目的启动类(含main方法的类)中添加继承extends springApplicationBuilder,并重写方法:
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder springApplicationBuilder) {
return springApplicationBuilder.sources(DiagnosisCenterApplication.class);
}
----------------------------------------分割线-----------------------------------------------------
场景描述 新建一springboot项目,编码完成,启动类如下:package com.jinshan.diagnosiscenter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.annotation.Bean;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@SpringBootApplication
@EnableAutoConfiguration
@ServletComponentScan
public class DiagnosisCenterApplication implements WebMvcConfigurer {
public static void main(String[] args) {
SpringApplication.run(DiagnosisCenterApplication.class, args);
}
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
return new RestTemplate(factory);
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setReadTimeout(180000);//单位为ms
factory.setConnectTimeout(5000);//单位为ms
return factory;
}
}
pom.xml文件如下:
项目在eclipse中可正常访问 打包部署到服务器(linux/windows)4.0.0 org.springframework.boot spring-boot-starter-parent 2.4.5 com.jinshan diagnosis-center 1.0.0 war diagnosis-center Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-logging mysql mysql-connector-java runtime org.springframework.boot spring-boot-starter-test test com.google.guava guava 30.1-jre com.google.code.gson gson org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-starter-log4j2 org.projectlombok lombok diagnosiscenter org.springframework.boot spring-boot-maven-plugin
无法访问。
- 缺少打包的依赖
- 打包插件问题
- 依赖版本问题
- 核对tomcat/conf/server.xml
一番操作之后发现都没有用,然后就看tomcat的日志信息,如下:
如图所示,只是tomcat启动了,但是并没有加载项目。,这就是原因所在
在网上对应一搜,找到一老大哥的文章https://www.pianshen.com/article/1265130159/ 解决了问题。
解决办法在springboot项目的启动类(含main方法的类)中添加继承extends springApplicationBuilder,并重写方法:
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder springApplicationBuilder) {
return springApplicationBuilder.sources(DiagnosisCenterApplication.class);
}
完整的启动类:
package com.jinshan.diagnosiscenter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@SpringBootApplication
@EnableAutoConfiguration
@ServletComponentScan
public class DiagnosisCenterApplication extends SpringBootServletInitializer implements WebMvcConfigurer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder springApplicationBuilder) {
return springApplicationBuilder.sources(DiagnosisCenterApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(DiagnosisCenterApplication.class, args);
}
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
return new RestTemplate(factory);
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setReadTimeout(180000);//单位为ms
factory.setConnectTimeout(5000);//单位为ms
return factory;
}
}
验证
重新打包并部署,查看日志:
如图所示,项目正常启动。
访问:
正常访问。



