Фабрика сопоставления Hibernate Search с инъекцией spring bean

Я использую программный API Hibernate Search и у меня есть настраиваемое усиление для каждой сущности. Конфигурацию можно прочитать через службу, к которой мне нужно получить доступ в фабрике сопоставлений. Можно ли как-то получить этот компонент внутри SearchMappingFactory? Проблема в том, что контекст Spring не полностью создан в тот момент, когда поисковому отображению нужны bean-компоненты из него.

 public class SearchMappingFactory{

   @Factory
   public SearchMapping getSearchMapping() {
       SearchMapping searchMapping = new SearchMapping();

       // here I need to read configuration using configurationService
       // ... define mapping ...

       return searchMapping;
   }
 }

Затем я устанавливаю это сопоставление в sessionFactory таким образом

 hibernateProperties.put("hibernate.search.model_mapping", SearchMappingFactory.class.getCanonicalName());

Я мог бы передать экземпляр SearchMappingFactory с автосвязанным bean-компонентом внутри, но SearchMappingBuilder.getProgrammaticMappingClass не позволяет этого...


person dzezzz    schedule 31.03.2014    source источник
comment
Не могли бы вы уточнить свой вопрос и добавить больше контекста/кода? Что вы имеете в виду под конфигурацией, которую можно прочитать через службу, к которой мне нужно получить доступ на фабрике сопоставлений. О каком сервисе настройки вы говорите? Проблема в том, что контекст приложения создан не полностью — вы говорите о контексте приложения Spring?   -  person Hardy    schedule 01.04.2014
comment
Верно, это контекст Spring, в основном мне нужно автоматически связать bean-компонент Spring внутри SearchMappingFactory. В этом случае этот bean-компонент является моей конфигурационной службой, где я читаю конфигурации xml.   -  person dzezzz    schedule 01.04.2014


Ответы (1)


Я нашел решение, я сделал SearchMappingFactory bean-компонентом с автосвязанными зависимостями и передал searchMapping прямо туда:

 hibernateProperties.put("hibernate.search.model_mapping", searchMappingFactory.getSearchMapping());
person dzezzz    schedule 01.04.2014