Вчера я получил очень странное поведение весной загрузочнуюSpring загрузки не ждать запроса
Например: я пытаюсь запустить сервер с помощью ./gradlew bootRun
:
...
:findMainClass
:bootRun
:: Spring Boot :: (v1.3.1.RELEASE)
2016-01-19 16:37:15.315 INFO 6118 --- [ main] c.e.server.Application$Companion : Starting Application.Companion on fake with PID 6118 (/home/user/code/xproject/server/build/classes/main started by user in /home/user/code/xproject/server)
2016-01-19 16:37:15.320 INFO 6118 --- [ main] c.e.server.Application$Companion : No active profile set, falling back to default profiles: default
2016-01-19 16:37:15.400 INFO 6118 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.spring[email protected]a3ec6b: startup date [Tue Jan 19 16:37:15 GMT 2016]; root of context hierarchy
2016-01-19 16:37:17.908 INFO 6118 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2016-01-19 16:37:17.923 INFO 6118 --- [ main] c.e.server.Application$Companion : Started Application.Companion in 3.048 seconds (JVM running for 3.421)
2016-01-19 16:37:17.924 INFO 6118 --- [ Thread-2] s.c.a.AnnotationConfigApplicationContext : Closing org.spring[email protected]a3ec6b: startup date [Tue Jan 19 16:37:15 GMT 2016]; root of context hierarchy
2016-01-19 16:37:17.930 INFO 6118 --- [ Thread-2] o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans on shutdown
BUILD SUCCESSFUL
Total time: 23.756 secs
Так что не ждет как всегда. Я думал, что есть некоторые проблемы с classpath, поэтому я поставил несколько аннотированных методов как @PostConstruct в контроллерах и службах и могу подтвердить, что они вызываются, и все зависимости в этот момент вводятся.
Вот мой gradle.build:
buildscript {
ext.kotlin_version = '1.0.0-beta-4584'
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.1.RELEASE")
}
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'kotlin'
jar {
baseName = 'xproject'
version = '0.1.0'
}
repositories {
mavenCentral()
jcenter()
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
compile("org.springframework.boot:spring-boot-starter-tomcat")
compile("org.springframework.boot:spring-boot-devtools")
compile 'org.springframework.data:spring-data-mongodb:1.8.2.RELEASE'
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile "com.restfb:restfb:1.18.1"
testCompile("junit:junit")
testCompile("org.springframework.boot:spring-boot-starter-test")
}
sourceSets {
main {
java.srcDirs += ['java', 'kotlin']
}
test {
java.srcDirs += 'test'
}
}
UPD # 1
Вот класс Application (я не трогайте его с самого начала).
@SpringBootApplication
open class Application {
companion object {
@JvmStatic fun main(args: Array<String>) {
SpringApplication.run(Application::class.java, *args)
}
}
}
UPD # 2
Малый автономный код
@RestController
@SpringBootApplication
@ComponentScan
public class GreetingController {
public static void main(String[] a) {
SpringApplication.run(GreetingController.class, a);
}
@PostConstruct
public void postConstruct() {
System.out.println("!! Post construct called");
}
private static final String template = "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(template, name));
}
}
дает мне почти тот же результат
:: Spring Boot :: (v1.3.1.RELEASE)
2016-01-19 17:18:19.790 INFO 8230 --- [ restartedMain] hello.GreetingController : Starting GreetingController on fake with PID 8230 (/home/user/code/xproject/server/build/classes/main started by user in /home/user/code/xproject/server)
2016-01-19 17:18:19.814 INFO 8230 --- [ restartedMain] hello.GreetingController : No active profile set, falling back to default profiles: default
2016-01-19 17:18:19.918 INFO 8230 --- [ restartedMain] s.c.a.AnnotationConfigApplicationContext : Refreshing org.spring[email protected]71ceb8: startup date [Tue Jan 19 17:18:19 GMT 2016]; root of context hierarchy
!! Post construct called
2016-01-19 17:18:22.860 INFO 8230 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729
2016-01-19 17:18:22.905 INFO 8230 --- [ restartedMain] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2016-01-19 17:18:22.922 INFO 8230 --- [ restartedMain] hello.GreetingController : Started GreetingController in 4.022 seconds (JVM running for 4.949)
2016-01-19 17:18:22.924 INFO 8230 --- [ Thread-8] s.c.a.AnnotationConfigApplicationContext : Closing org.spring[email protected]71ceb8: startup date [Tue Jan 19 17:18:19 GMT 2016]; root of context hierarchy
2016-01-19 17:18:22.930 INFO 8230 --- [ Thread-8] o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans on shutdown
Process finished with exit code 1
Просьба показать ваше приложение «Приложение» или «Класс Application.Companion». – dunni
@dunni Я обновил вопрос – ruX
Ваш путь каким-то образом укушен, он не обнаруживает tomcat и, как таковой, не запускает веб-приложение, без этого оно заканчивается немедленно. (Он должен начинать веб-контент, а не простой контекст. Убедитесь, что нет ничего, что могло бы изменить содержимое веб-сайта. –