2014-07-09 27 views
0

我的配置如下:回退在spring配置的persistence.xml

<bean 
     class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" 
     id="entityManagerFactory"> 
     <property name="dataSource" ref="dataSource" /> 

     <property name="persistenceXmlLocation" 
      value="classpath:META-INF/spring/environments/${env}/persistence.xml" /> 
    </bean> 

我想,如果

META-INF /春/环境/ $ {ENV} /持久.XML

没有找到,我想LocalContainerEntityManagerFactoryBean加载

META-INF/spring/environments/dev/persistence.xml

这可能吗?

回答

0

我觉得那不是箱子。但是你可以使用一个小的支持类来做到这一点。

public class ResourceCandidateResolver { 

    @Autowired 
    private ResourceLoader resourceLoader; 
    private String[] candidates; 

    public String resolve() { 
     for (String candidate : candidates) { 
      Resource res = resourceLoader.getResource(candidate); 
      if (res.exists()) 
       return candidate; 
     } 

     return null; 
    } 

    public String[] getCandidates() { 
     return candidates; 
    } 

    public void setCandidates(String[] candidates) { 
     this.candidates = candidates; 
    } 
} 

并使用拼写注入它。

<bean id="resourceCandidateResolver" class="beans.ResourceCandidateResolver"> 
     <property name="candidates"> 
      <list> 
       <value>classpath:/persistence-one.xml</value> 
       <value>classpath:/persistence-two.xml</value> 
      </list> 
     </property> 
</bean> 
<bean 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" 
    id="entityManagerFactory"> 
    <property name="dataSource" ref="dataSource" /> 

    <property name="persistenceXmlLocation" 
     value="#{resourceCandidateResolver.resolve()}" /> 
</bean> 

其他选项是配置类。

+0

如何使用第二个选项(配置类)? – riship89

+0

@ riship89使用Bean方法创建一个Configuration类,该方法创建LCEMFB,在其中搜索有效的持久性配置。 –