Java 将Spring安全性添加为依赖项会导致应用程序表现不同

Java 将Spring安全性添加为依赖项会导致应用程序表现不同,java,spring,tomcat,spring-security,spring-boot,Java,Spring,Tomcat,Spring Security,Spring Boot,简而言之:当我将springbootstartersecurity添加到我的build.gradle中时,会发生奇怪的事情。这是我的提炼代码(根本没有其他代码): 这是我的构建。gradle: dependencies { testCompile group: "junit", name: "junit", version: "4.11" compile group: "org.springframework.boot", name: "spring-boot-starter-w

简而言之:当我将
springbootstartersecurity
添加到我的
build.gradle
中时,会发生奇怪的事情。这是我的提炼代码(根本没有其他代码):

这是我的
构建。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安全性
依赖项时,奇怪的事情发生了。一旦我取消对该行的注释,抛出的异常就是
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

当我运行应用程序时,发现某个地方有一个
BeanCreationException


是否有可靠的方法来捕获
BeanCreationException

另一个线程中正在抛出
BeanCreationException
(Spring Security是一个过滤器,过滤器在嵌入式容器中以特殊方式初始化)。我不确定我们是否可以强迫Tomcat使用主线程(我尝试过一次,但放弃了,但这并不一定意味着不可能)。如果您可以改进它,请在github中提出建议。

我想没有
BeanCreationException
因为其他方面出了问题。不知道是什么。你能显示堆栈跟踪吗?(忽略这一点。刚刚看到日志。)谢谢你,戴夫。我刚刚发现的一件有趣的事情是,这个“问题”(问题?)只在我使用Tomcat时出现。当我切换到Jetty时,它会正确地抛出
BeanCreationException
org.springframework.context.ApplicationContextException
org.springframework.boot.context.embedded.EmbeddedServletContainerException
org.apache.catalina.LifecycleException
org.apache.catalina.LifecycleException
org.apache.catalina.LifecycleException