Spring Boot hello world MVC应用程序无法加载

时间:2015-04-01 11:41:11

标签: java spring-boot

我熟悉使用带有servlet映射的spring的旧方法,但我想我会尝试使用SpringBoot来获得更快的新应用程序并尽可能使用默认值。

我似乎无法让最基本的helloworld控制器工作。

看起来SpringBoot根本不是引导。我在Application main方法中放了一个断点,它不会中断。

使用gradle构建项目,并通过IntelliJ在tomcat中部署。

我很遗憾一些非常简单的事情。但它是什么?

这是gradle文件:

buildscript {
    ext {
        springBootVersion = '1.2.3.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'war'


war {
    baseName = 'test'
    version = '0.0.1-SNAPSHOT'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
}

configurations {
    providedRuntime
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-actuator")
    compile("org.springframework.boot:spring-boot-starter-security")
    compile("org.springframework.boot:spring-boot-starter-aop")
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    compile("org.springframework.boot:spring-boot-starter-web")
    compile("org.springframework.boot:spring-boot-starter-log4j2")
    providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
    testCompile("org.springframework.boot:spring-boot-starter-test")
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.12'
}

Application.java

@SpringBootApplication
public class TestApplication {

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

Servlet初始化程序:

public class ServletInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(TestApplication.class);
    }
}

和控制器:

@RestController
@EnableAutoConfiguration
public class IndexController {
    @RequestMapping("/")
    public String index() {
        return "Greetings from Spring Boot!";
    }
}

2 个答案:

答案 0 :(得分:2)

发现问题。

我开始了一个没有弹簧启动的新应用程序。只是一个老式的基于xml的spring应用程序,通过这种方法我可以看到一个例外。它抱怨在一个Java版本中编译并在另一个Java版本中运行。我试图让它在Java 8中运行。

我已经切换回Java 7,果然,SpringBoot应用程序运行正常。

感谢PaulINUK提出的建议。如果在引导SpringBoot时出现问题,那么你看不到例外情况并不是很好。

答案 1 :(得分:1)

首先,我通过运行main方法检查它是否适用于嵌入式配置(即从gradle配置中删除Tomcat提供的依赖项)。

通过添加

进行完整记录也值得

logging.level.org.springframework.web:DEBUG

到您的application.properties/yaml

一旦你确定了这一点,就构建战争,部署并发布tomcat服务器日志。如果它是servlet 3+,您应该看到有关检测到的ServletInitializers的消息。

顺便说一句,你的@EnableAutoConfiguration是多余的,因为@SpringBootApplication注释包含前者:

http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-using-springbootapplication-annotation.html