So I'm trying to start a new web project in IntelliJ using the Spring option in the project configuration setups, but when I finally get the project setup, it seems as though any new controllers I make are ignored even though I annotate them. The @RequestMapping seems to never get mapped. All that I have ever been able to access is files located in the root of the web directory.
After never being able to get this to work I switched to Gradle so that I could import some additional libraries to test my project. My gradle file looks like the following:
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'
}
Is there some sort of config file I have to fill out to tell the project where to look for controllers or is the pixie dust not working like I expect it to?
Here's what my controller looks like:
@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));
}
}
And the class annotated with @SpringBootApplication:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
And my folder structure:
Test
- .gradle
- .idea
- build
- gradle
- out
- src
- main
- java
- controllers
- Application.java
- GreetingController.java
- test
- web
- WEB-INF
- (empty)
I'm really confused about how Spring works at this point because the annotations haven't come into play yet. Am I missing a config file? The Spring starter tutorial says I don't need one, but maybe it's because I'm using IntelliJ.
One last thing to note is that I'm running using a local Tomcat instance.
Thanks all!