【发布时间】:2014-05-08 11:52:18
【问题描述】:
简而言之:当我将spring-boot-starter-security 添加到我的build.gradle 时,会发生奇怪的事情。这是我的提炼代码(根本没有其他代码):
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因为还有其他问题。不确定是什么。你能显示堆栈跟踪吗? (忽略。刚刚看到日志。)
标签: java spring tomcat spring-security spring-boot