2014-01-27 2 views
0

У меня есть приложение весны (A), которое использует переходную зависимость (B), которая сама по себе также основана на Spring.Как узнать, как конкретный компонент подключен весной

Итак, подведем итоги, война A & jar B - это весенние проекты. B является зависимостью A.

Одним из атрибутов класса B оформлен следующим образом

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

Я прошел через контекст приложения файлы A & B, но я не найти объявление бина с идентификатором 'thisIsTheTargetRef'. Но как-то журналы показывают, что .hardToFindMe. attr подключается к компоненту 'thisIsTheTargetRef'. Я просматриваю проекты A & B, включая все другие зависимости, чтобы увидеть, будет ли это получать из другого места. Нет кубиков. Я даже проверил пакеты Component-scan, но не повезло. Я также сделал поиск в твердом тексте для «thisIsTheTargetRef» как в A & B, включая проекты зависимостей. Я все еще не нахожу его.

Вот фрагмент журнала, показывающий, что компонент по-прежнему подключен.

[#|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 называется местом для компонента. Как я могу отлаживать, чтобы узнать, откуда его выбрали? Благодарю.

+0

Если вы просматриваете все свои файлы ('grep -r 'thisIsTheTargetRef''), вам нужно найти, где этот компонент определен ... вы, должно быть, что-то пропустили. –

ответ

0

Возможно, вам повезло, указав часы/точку останова на поле, которое вы знаете, где оно вводится. Во время отладки вы должны остановиться во время процесса автоустановки, и вы увидите, какой класс подключен. Это должно помочь идентифицировать его, а затем проверить вхождения для этого класса.

Я не уверен, можете ли вы непосредственно узнать, откуда загружается этот компонент. Одним из намеков должен быть либо обработчик аннотации, либо xmlпроцессор.

Смежные вопросы