所以我试图在项目配置设置中使用Spring选项在IntelliJ中启动一个新的Web项目,但是当我最终得到项目设置时,似乎我所做的任何新控制器都会被忽略,即使我注释它们也是如此 . @RequestMapping似乎永远不会被映射 . 我以前能够访问的只是位于web目录根目录中的文件 .
从来没有能够使这个工作我切换到Gradle,以便我可以导入一些额外的库来测试我的项目 . 我的gradle文件如下所示:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.2.RELEASE")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'
sourceSets {
main {
java {
srcDirs = ['src/main/java']
}
}
test {
java {
srcDirs = ['src/main/test']
}
}
}
jar {
baseName = 'gs-rest-service'
version = '0.1.0'
}
repositories {
mavenCentral()
}
sourceCompatibility = 1.7
targetCompatibility = 1.7
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile("junit:junit")
testCompile "org.mockito:mockito-core:1.+"
}
task wrapper(type: Wrapper) {
gradleVersion = '2.3'
}
是否有某种配置文件,我必须填写告诉项目在哪里寻找控制器或小精灵粉尘不像我期望的那样工作?
这是我的控制器的样子:
@RestController
public class GreetingController {
public static final String greeting = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue = "World") String name){
return new Greeting(counter.incrementAndGet(), String.format(greeting, name));
}
}
并且使用@SpringBootApplication注释的类:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
我的文件夹结构:
Test
- .gradle
- .idea
- build
- gradle
- out
- src
- main
- java
- controllers
- Application.java
- GreetingController.java
- test
- web
- WEB-INF
- (empty)
我真的很困惑Spring在这一点上是如何工作的,因为注释尚未发挥作用 . 我错过了配置文件吗? Spring入门教程说我不需要一个,但也许是因为我正在使用IntelliJ .
最后要注意的是我正在使用本地Tomcat实例运行 .
谢谢大家!
1 回答
如果在Tomcat中部署应用程序,则必须创建一个扩展SpringBootServletInitializer的类来启动Spring容器 . 使用main方法的Application类仅在使用带有嵌入式Tomcat的java -jar yourfile.jar运行JAR / WAR时调用(默认情况下包含在Spring Boot Starter Web中) .
请参阅文档:http://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/htmlsingle/#howto-create-a-deployable-war-file