Spring Boot / Tomcat,“由于缺少ServletWebServerFactory bean而无法启动ServletWebServerApplicationContext”

时间:2019-03-16 11:45:47

标签: spring maven spring-boot tomcat

我知道对此还有其他问题,我已经检查过,但没有一个能解决我的问题。

非常简单的POM ,已准备就绪:将我的应用程序与嵌入式Web服务器一起使用,只需启动即可...

<packaging>jar</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

非常简单引导类:

@SpringBootApplication
@RestController
public class SpringBootApp {

    public static void main(String[] args) {
        SpringApplication.run(SpringApplication.class, args);
    }

    @RequestMapping(value = "/")
    public String hello() {
        return "Hello World from Tomcat";
    }

}

尝试:

  • 扩展SpringBootServletInitializer类。
  • 将spring-boot-starter-parent更新为最新版本(2.1.3)。
  • 在application.properties中设置spring.profiles.active = default。
  • 在@Configuration中手动注入TomcatWebServerFactory(ugh ...) 课。
  • 运行mvn依赖项:purge-local-repository并删除/ repository目录 从我的.m2目录中,使用mvn clean install -U再次获取所有内容。

ETC ...我不明白为什么它不起作用,尽管我应该很容易使用Spring Boot。

  

由于丢失而无法启动ServletWebServerApplicationContext   ServletWebServerFactory bean。

1 个答案:

答案 0 :(得分:2)

SpringApplication.run()的第一个参数应该是应用程序的主要配置类。您的情况是SpringBootApp.class,而不是SpringApplication.class。以下是您的Spring Boot应用程序的正确配置。

public static void main(String[] args)
{
    SpringApplication.run(SpringBootApp.class, args);
}