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