1

我正在与一个由 10 多名 Java 开发人员组成的团队合作开发一个 Web 应用程序。这是一个大项目(2 岁),从昨晚开始我们就遇到了一个问题:一些 bean(2 个 bean)在使用时会导致 NullPointerException(好像 IoC 不再工作一样)。

问题是,两天前一切正常,这两天我阅读了每一个提交,但 Spring Configuration 文件没有任何变化。

我知道有时如果你通过 Spring 动态注入一个 bean 并通过新的操作数实例化它,它会给出一个 NPE,但在项目中没有任何迹象。

所有开发人员在他们的本地机器上都没有这个问题,但是在 CI 服务器上,它可以正常工作一段时间然后停止,直到我们重新启动机器(而不是服务器)。有谁知道如何处理这个问题?服务器启动根本没有显示任何错误。

更新:

  • 服务器上下文初始化绝对没有错误(也没有警告),并以成功消息结束。

  • 我检查了对 bean setter 的所有调用:没有使用。

  • bean 是通过配置文件获取的,没有 @Autowired。

  • 实际上,我已经在整个项目中搜索了新的操作数,花了我将近两个小时来检查每个,但是没有一个 bean 实例化了一个新的操作数。

4

2 回答 2

2

我的猜测是有人叫“new”来创建一个bean,这意味着它不再受Spring bean工厂的控制,但不知何故它依赖于DI。如果您使用注释来连接资源,则更有可能。

您自己说过:多年来一直运行良好。春天并没有突然消失。更有可能的是,这 10 多位 Java 开发人员中的一位是新手,或者并不像他们认为的那样理解 Spring。

于 2012-11-27T10:38:04.567 回答
0

问题是由于 JavaMelody 和 Spring AOP 之间的冲突造成的。为了解决这个问题,我们不得不暂时禁用 JavaMelody,直到我们知道问题的根源。

来自 JavaMelody FAQ(更多信息)

如果您的应用程序在一体式监控spring.xml 和AOP 或@Autowired 之间存在冲突,那么您可以使用monitoring-spring-datasource.xml 文件,而不是monitoring-spring.xml。该文件仅包含数据源后处理器和 SpringDataSourceFactoryBean 的示例。

于 2012-11-28T14:04:39.070 回答