Как я могу определить объекты в контексте приложения? - PullRequest
0 голосов
/ 11 ноября 2009

Я пытаюсь написать портлет для Liferay (используя Tomcat и Spring), и мне нужно использовать базу данных через Persistence API / Hibernate. Я использую некоторые конфигурационные XML-файлы (applicationContext.xml и т. Д.) И аннотации, чтобы понять это. например,

@Component @Scope("application")
public class SomeForm {
   @PersistenceContext EntityManager entityManager;

В настоящее время у меня возникают некоторые проблемы с исключениями NullPointerException, которые, по моему мнению, возникают из-за того, что entityManager не связан. Но я спрашиваю не об этой проблеме, а о более широкой теме:

Существует ли простой способ проверить, какие Объекты доступны в контексте приложения во время выполнения (например, PesistenceContext, SessionContext) и определить, как Объект связан в контексте приложения во время выполнения?

1 Ответ

2 голосов
/ 11 ноября 2009

Вы можете вызывать методы

getBeanDefinitionCount()
getBeanDefinitionNames()
getBeanNamesForType()
getBeansOfType()
getBean()

в самом контексте приложения для проверки bean-компонентов, которые он содержит во время выполнения.

Существуют также эквивалентные статические методы в классе BeanFactoryUtils , которые будут учитывать иерархию вложенности, если вы используете вложенные контексты.

...