首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Security添加为依赖项会导致应用程序的行为不同

将Security添加为依赖项会导致应用程序的行为不同
EN

Stack Overflow用户
提问于 2014-03-28 20:30:36
回答 1查看 73关注 0票数 1

简单地说:当我将spring-boot-starter-security添加到build.gradle中时,会发生奇怪的事情。这是我的蒸馏代码(根本没有其他代码):

代码语言:javascript
复制
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

代码语言:javascript
复制
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。它是这样工作的。当我试图在spring-boot-starter-security中添加build.gradle依赖项时,会发生奇怪的事情。一旦我取消注释这一行,抛出的异常是ApplicationContextException。如果我递归地调用getCause(),结果如下:

代码语言:javascript
复制
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吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-29 07:09:39

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22722653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档