【问题标题】:Is there any way to Ignore(Bypass) BeansException(BeanCreationException) and go on in Spring?有什么办法可以忽略(绕过)BeansException(BeanCreationException)并在Spring中继续?
【发布时间】:2013-06-04 06:04:50
【问题描述】:

在加载时,Spring Container 初始化 Beans...当它发现与 Bean 相关的错误时,它会停止并回滚(不是确切的术语)...据我所知。

这是我们的条件。 我们正在开发一种网络应用系统。 (它超大) 有几千个春豆。 我们的客户要求以下。 “在 WAS 重启期间,即使一个或一些 Bean 有问题(加载时错误),忽略这些,系统必须继续......”

我们已经通过修改 Spring 的源代码满足了这个要求……但我认为这不是好的(正确的)方式。

嗯... 是否有另一种忽略 BeansException 的方法? (首先我说服了客户理解忽略不是好办法,但是失败了。)

【问题讨论】:

    标签: spring exception javabeans


    【解决方案1】:

    我认为一种选择是使用注释和@Autowire 标记,将 required 设置为 false。这样,如果 Spring 找到了 bean,它会自动将其插入。如果没有,您将获得一个 null 引用。

    如果这不是一个选项,那么您可以实现 ApplicationContextAware 并使用您获得的应用程序上下文手动将事物连接在一起。我更喜欢第一个选项。

    但是,在任何情况下,我都不会考虑修改 Spring 代码。我认为这很危险,并且使您不得不永远支持您的自定义 Spring 库,或者永远不会更新 Spring。

    【讨论】:

    • 非常感谢您的回答。 ^^ 您的第一个选择,遗憾的是......这不是我的选择。 =_+' (我没有关于代码标准的权力。)其次......我知道这很烦人......嗯......正如预期和搜索的那样,没有聪明和干净的方法...... -_-; ;;
    • 不管你最终如何解决这个问题,如果是我,我会不惜一切代价推动不直接对 Spring 源代码进行更改。我认为你只是在自找麻烦。总之,祝你好运。
    • 会让你的一些 bean 延迟加载而不是急切地部分解决问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 2019-03-11
    • 2013-03-17
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多