2014-03-31 27 views
0

我使用Hibernate Search programmatic api,我对每个实体都有可配置的提升。配置可以通过我需要在映射工厂访问的服务读取。 SearchMappingFactory内部有可能以某种方式获取这个bean吗?问题在于,在搜索映射需要来自它的bean时,spring上下文并未完全创建。注入spring bean的Hibernate搜索映射工厂

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()); 

我可以与自动装配Autowired豆经过SearchMappingFactory的实例内,但SearchMappingBuilder.getProgrammaticMappingClass不允许...

+0

你能澄清你的问题并添加更多的上下文/代码吗? “你可以通过我需要在映射工厂访问的服务读取配置”的含义是什么。你指的是什么配置服务? “问题是应用程序上下文没有完全创建” - 你在谈论Spring应用程序上下文吗? – Hardy

+0

对,它是Spring上下文,基本上我需要在SearchMappingFactory里自动装入spring bean。在这种情况下,这个bean是我的配置服务,我阅读XML配置。 – dzezzz

回答

0

我发现解决方案,我使SearchMappingFactory具有自动布线依赖关系的bean,并直接在那里传递searchMapping:

hibernateProperties.put("hibernate.search.model_mapping", searchMappingFactory.getSearchMapping());