java - 配置 Eclipse Web 项目来测试 Spring/JPA 的理想方法是什么

标签 java eclipse spring jpa

我最近使用 eclipse(实际上是 myeclipse)通过 new->web 项目向导创建一个新的 Web 项目。项目的默认目录结构如下所示:

src
WebRoot
WebRoot/META-INF
WebRoot/META-INF/MANIFEST.MF
WebRoot/WEB-INF
WebRoot/WEB-INF/lib
WebRoot/WEB-INF/classes (not visible via the Package/Project Explorer)
WebRoot/WEB-INF/web.xml

对于 jpa,我添加了:

WebRoot/META-INF/persistence.xml  

对于 Spring ,我添加了:

WebRoot/META-INF/spring/spring-master.xml

当尝试运行一个非常基本的 junit 测试来加载 spring 上下文和 hibernate 实体管理器时,我遇到了类路径问题。最初,为了解决我遇到的第一个类路径问题,当 Spring 找不到我的 spring 配置文件时,我将 WebRoot/META-INF/spring 添加到 junit->Run Configurations 类路径中。

但是当 jpa 找不到我的实体 bean 定义时,我遇到了另一个类路径错误。正在阅读this article (dated 2007)它指出 META-INF/persistence.xml 应包含在 WEB-INF/classes 中,因为 JPA 在 META 的父目录中搜索实体 bean 类文件-INF/persistence.xml

当我复制 META-INF (通过 Windows 资源管理器,因为 eclipse 隐藏了类目录)并将其所有内容复制到 WEB-INF/classes 时,我的类路径错误消失了(以及需要使用junit运行配置来解决之前的spring不知道我的spring配置文件位于哪里的问题结果我仍然需要将spring文件夹添加到junit类路径中选项)。

但是现在我的配置文件位于 Eclipse 的 Package/Project Explorer 中未显示的文件夹中。

针对这种情况设置 Eclipse 的最佳方法是什么?告诉它以某种方式显示类文件夹?为什么 Eclipse 为 Web 项目创建 META-INF 作为 WEB-INF 的同级?

有没有办法通知 JPA 在默认值以外的地方查找实体类?

感谢您的任何意见!

最佳答案

你应该知道eclipse混合了src中编译的类和资源(以及任何其他源代码目录)在 <WebRoot>/WEB-INF/classes 中目录。

因此,在 Test 和 Webapp 中访问同一文件(例如 META-INF/persistence.xml)的一种方法是将其放在 src/META-INF/persistence.xml 中。 。然后它可以在 <WebRoot>/WEB-INF/classes/META-INF/persistence.xml 中找到。对于网络应用程序,以及 <classpath>/META-INF/persistence.xml适用于每个应用程序或测试。

所以我的建议是将通过类路径(persistence.xml、spring.xml)解决的所有内容放在源目录中,然后让 eclipse 完成其余的工作。 - 如果您通过类路径指定资源的位置,那么它对于 webapp、test、app 的工作方式应该相同。

顺便说一句:eclipse可以创建许多源代码目录,您可以使用一个用于普通应用程序类,一个用于类路径相关资源,一个用于测试类。

关于java - 配置 Eclipse Web 项目来测试 Spring/JPA 的理想方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5809864/

相关文章:

java - 在 Java 中创建 TableColumn 并将其添加到 JTable

java - 哪种语言(在 JVM 上运行)最适合创建 DSL?

java - Eclipse Jetty 似乎无法使用

java - JSP 页面上未显示区域字符

java - Spring Batch JobExecutionException - ConcurrencyFailureException

java - Lucene 外部字段查询

java - 防止多次提交 Struts2 : Not Showing Success Message

java - 私有(private)的嵌套类(内部或静态)是否可以具有可公共(public)访问的方法?

Python 日志文件配置 KeyError : 'formatters'

java - 单击按钮时打开手机默认启动器