2015-04-01 89 views
0

所以我試圖在項目配置設置中使用Spring選項在IntelliJ中啓動一個新的Web項目,但是當我最終獲得項目設置時,好像任何新的控制器I即使我註釋它們,make也會被忽略。 @RequestMapping似乎永遠不會被映射。我曾經能夠訪問的所有文件都位於Web目錄的根目錄中。IntelliJ Spring Gradle項目註釋不工作

之後永遠無法得到這個工作,我切換到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容器的類。只有在運行帶有嵌入式Tomcat的java -jar yourfile.jar(其默認情況下包含Spring Boot Starter Web)運行JAR/WAR時,纔會調用帶有main方法的Application類。

請參閱文檔:http://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/htmlsingle/#howto-create-a-deployable-war-file

+0

您是救生員。一旦我擴展了文檔中提到的類,它就會在日誌中運行並顯示Spring啓動信息。 – CoderOfHonor 2015-04-01 19:39:44

相關問題