将Spring Data Rest和Spring Data JPA一起加载

时间:2012-05-25 15:04:39

标签: spring rest spring-data-jpa spring-data-rest

我在同一个Web应用程序中尝试Spring-Data-JPA和Spring-Data-Rest,但它们无法正常工作。该应用程序具有所需的所有maven依赖项,并且它们是最新的。

可以同时使用两个网络层吗?

配置中可能出现什么错误?

有人有任何建议正确设置吗?

2 个答案:

答案 0 :(得分:2)

我毫无疑问地并排使用了这两种技术。

我有一个现有的Spring MVC应用程序,其中包含使用Spring数据JPA创建的存储库。然后我在顶部添加了Spring数据REST。

Servlet 3.0配置

    // Register and map the standard dispatcher servlet
    ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet(mvcContext));
    dispatcher.setInitParameter("contextConfigLocation", "/WEB-INF/spring/appServlet/servlet-context.xml");
    dispatcher.setLoadOnStartup(1);
    dispatcher.addMapping("/app/*");

    // Register the Spring data rest exporter servlet
    ServletRegistration.Dynamic exporter = servletContext.addServlet("exporter", RepositoryRestExporterServlet.class);
    exporter.addMapping("/rest/*");

Maven pom.xml config

<!--
NB. This pulls in Spring data JPA
and just about everything else you need.
-->
<dependency>
  <groupId>org.springframework.data</groupId>
  <artifactId>spring-data-rest-webmvc</artifactId>
  <version>1.0.0.RC2</version>
</dependency>

您需要在xxx-export.xml中添加META-INF/spring-data-rest文件。我只是将其指向我现有的根配置上下文。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd">

    <import resource="../../root-context.xml"/>

</beans>

最后,我的root配置

  <context:component-scan base-package="my.package.spring"/>

  <jpa:repositories base-package="my.package.spring.repo"/>

  <!-- enable the configuration of transactional behavior based on annotations -->
  <tx:annotation-driven transaction-manager="transactionManager"/>

  <bean id="entityManagerFactory" ...>
      ...
  </bean>

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

  <bean id="dataSource" ...>
      ...
  </bean>

我现有的@Controller仍可在localhost:8080/myapp/app/*处获得,新的其他终结点也会导出到localhost:8080/myapp/rest/*

答案 1 :(得分:1)

我刚刚遇到同样的问题 - 当我将spring-data-rest-webmvc添加到maven pom.xml时,Spring数据JPA停止工作(加载Spring applicationContext.xml的问题 - 未知属性)。

问题在于spring-data-jpa版本不匹配 - spring-data-rest-webmvc它依赖于spring-data-jpa ,所以我不得不删除spring-data-jpa来自pom.xml

错误pom.xml

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>1.4.2.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-rest-core</artifactId>
    <version>1.0.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-rest-webmvc</artifactId>
    <version>1.0.0.RELEASE</version>
</dependency>

<强>固定

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-rest-core</artifactId>
    <version>1.0.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-rest-webmvc</artifactId>
    <version>1.0.0.RELEASE</version>
</dependency>