繁体   English   中英

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

[英]How to find out how a specific bean is wired in Spring

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

综上所述,战争A和jar B都是春季项目。 B是A的从属。

B中类的属性之一按以下方式修饰

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

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

这是一个日志片段,显示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的位置。 我该如何调试以找出从哪里捡来的呢? 谢谢。

通过在已知注入位置的字段上定义监视/断点,您可能会很幸运。 在调试过程中,您应该在自动装配过程中停下来,然后看到连接的是哪个类。 这应该有助于识别它,然后检查此类的发生。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM