簡而言之:奇怪的事情發生在我將spring-boot-starter-security
添加到我的build.gradle
時。這裏是我的蒸餾水代碼(有沒有其他代碼的話):將Spring Security添加爲依賴項導致應用程序的行爲不同
public class App {
public static void main(String[] args) {
try {
SpringApplication.run(AppConfiguration.class, args);
} catch(BeanCreationException e) {
System.out.printf("HURRAY: %s\n", e.getBeanName());
}
}
@Configuration
@EnableAutoConfiguration
@ComponentScan // !!! NOTE: extends WebMvcConfigurerAdapter !!!
public static class AppConfiguration extends WebMvcConfigurerAdapter {
@Autowired
private MyService myService;
}
@Component
public static class MyService {
public MyService() {
throw new RuntimeException("Error");
}
}
}
這裏是我的build.gradle
:
dependencies {
testCompile group: "junit", name: "junit", version: "4.11"
compile group: "org.springframework.boot", name: "spring-boot-starter-web", version: "1.0.0.RC5"
// compile group: "org.springframework.boot", name: "spring-boot-starter-security", version: "1.0.0.RC5" // HERE
}
我期待的行爲是BeanCreationException
將拋出catch
將打印HURRAY
。它以這種方式工作。奇怪的事情發生在我嘗試在build.gradle
中添加spring-boot-starter-security
依賴項時。一旦我取消註釋該行,拋出的異常是ApplicationContextException
。如果我遞歸調用getCause()
,結果是這樣的:
org.springframework.context.ApplicationContextException
org.springframework.boot.context.embedded.EmbeddedServletContainerException
org.apache.catalina.LifecycleException
org.apache.catalina.LifecycleException
org.apache.catalina.LifecycleException
你可以看到,有沒有BeanCreationException
可言。
當我運行的應用程序,the logs clearly say那裏有一個BeanCreationException
某處。
有沒有可靠的方法來捕獲BeanCreationException
?
我想沒有'BeanCreationException'因爲別的事情出錯了。不知道是什麼。你能顯示堆棧跟蹤嗎? (忽略它,只看到了日誌。) –