我在同一个Web应用程序中尝试Spring-Data-JPA和Spring-Data-Rest,但它们无法正常工作。该应用程序具有所需的所有maven依赖项,并且它们是最新的。
可以同时使用两个网络层吗?
配置中可能出现什么错误?
有人有任何建议正确设置吗?
答案 0 :(得分:2)
我毫无疑问地并排使用了这两种技术。
我有一个现有的Spring MVC应用程序,其中包含使用Spring数据JPA创建的存储库。然后我在顶部添加了Spring数据REST。
// 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/*");
<!--
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>
<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>