如何在Spring中找出特定bean的连接方式

时间:2014-01-27 18:46:40

标签: java spring java-ee dependency-injection

我有一个spring应用程序(A),它使用瞬态依赖(B),它本身也基于Spring。

总而言之,战争A& jar B都是春季项目。 B是A的依赖。

B中某个类的属性之一按以下方式进行修饰

@Resource(name="thisIsTheTargetRef")
private String hardToFindMe;

我浏览了A& A的应用程序上下文文件。 B但我没有找到id为'thisIsTheTargetRef'的bean声明。但不知何故,日志显示.hardToFindMe。 attr与'thisIsTheTargetRef'bean连接。我搜索了A& B项目包括所有其他依赖项,以查看是否从其他地方获取。没有骰子。我甚至检查了组件扫描包,但没有运气。我还在A& A中对'thisIsTheTargetRef'进行了硬搜索。 B包括依赖项目。我仍然没有找到它。

这是一个日志片段,显示该bean仍在接线。

[#|2014-01-27T18:23:16.654+0000|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=10;_ThreadName=Thread-3;|77875 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory {} null - Returning cached instance of singleton bean 'thisIsTheTargetRef'
|#]


[#|2014-01-27T18:23:46.640+0000|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=10;_ThreadName=Thread-3;|18:23:46,639 INFO  [XmlWebApplicationContext:1332] Bean 'thisIsTheTargetRef' of type [class org.springframework.jndi.JndiObjectFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
|#]

看来我在这里遗漏了一些东西。可能有一种依赖,我错过了调查,我的眼睛只是在欺骗我。但是我应该看看其他任何明显的地方吗?

如果没有,基于日志,XmlWebApplicationContext:1332被称为bean的位置。如何进行调试以找出从中挑选的位置?感谢。

1 个答案:

答案 0 :(得分:0)

通过在您知道注入位置的字段上定义监视/断点,您可能会很幸运。在调试期间,您应该在自动装配过程中停止,您将看到哪个类已连线。这应该有助于识别它,然后检查这个类的出现次数。

我不确定你是否可以直接找出这个bean的加载位置。一个提示应该是注释处理器或xmlprocessor。