我熟悉使用带有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!";
}
}
答案 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注释包含前者: