我有一个基于Spring 2.x的大型应用程序,包含几百个applicationContext.xml
个文件和几千个bean / bean工厂。
这些XML配置中的大多数都说default-autowire="byName"
之类的东西,有效地打开了自动装配,但只有一小部分bean实际上是自动装配的。大多数bean属性都是明确设置的。
(这是历史的原因,我想这就是你过去不够聪明的时候所说的。)
现在我们想删除自动装配。我们相信只有一小部分豆子实际上是自动装配的 - 但我们不知道,究竟是什么,也不知道。我的问题是:
我们怎样才能找出春天自动装配的内容?
理想情况下,我们需要获取bean /属性列表,以便我们可以在XML配置中明确地注入这些内容。但在使用调试器进入Spring内部之前,我决定询问SF上的某个人是否已经解决过类似的任务。
PS。我无意讨论自动装配是好还是坏。我们有许多内部技术原因要删除自动装配,就是这样。
答案 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的名称。