如何找出Spring autowire究竟是什么?

时间:2011-09-21 07:44:01

标签: spring autowired

我有一个基于Spring 2.x的大型应用程序,包含几百个applicationContext.xml个文件和几千个bean / bean工厂。

这些XML配置中的大多数都说default-autowire="byName"之类的东西,有效地打开了自动装配,但只有一小部分bean实际上是自动装配的。大多数bean属性都是明确设置的。

(这是历史的原因,我想这就是你过去不够聪明的时候所说的。)

现在我们想删除自动装配。我们相信只有一小部分豆子实际上是自动装配的 - 但我们不知道,究竟是什么,也不知道。我的问题是:

我们怎样才能找出春天自动装配的内容?

理想情况下,我们需要获取bean /属性列表,以便我们可以在XML配置中明确地注入这些内容。但在使用调试器进入Spring内部之前,我决定询问SF上的某个人是否已经解决过类似的任务。

PS。我无意讨论自动装配是好还是坏。我们有许多内部技术原因要删除自动装配,就是这样。

2 个答案:

答案 0 :(得分:8)

您可以尝试在Spring中启用DEBUG日志记录。它在初始化阶段打印了大量信息。我打赌也打印出自动接线消息。您只需找到该消息,然后在应用程序完全初始化后解析日志文件。

更新:我相信AbstractAutowireCapableBeanFactory负责自动布线逻辑。您可以检查autowireByName方法。它会生成以下日志消息,您可以在日志文件中搜索:

logger.debug("Added autowiring by name from bean name '" + beanName +
    "' via property '" + propertyName + "' to bean named '" + propertyName + "'"); 

答案 1 :(得分:1)

我的猜测是在特定文件中为该软件包(进行自动装配的软件包)启用记录器(log4j)。

那将输出所有bean的名称。