在 web.xml 中读取 jar 的 spring 配置 xml
我创建了一个 maven 多模块 maven 项目。包含 DAO 模块。在这个模块中,我使用 hibernate 和 spring。我安装它。然后我创建了一个独立的 maven web 项目。我使用这个 jar。我不想使用类路径:xxx.xml。因为我希望其他人在不知道我的 xml 名称的情况下使用我的 jar,因为那个 jar 包含许多 xml。我想知道如何解决这个问题。我正在尝试写一个新的春季听众?或其他方式。谢谢。
如果我理解正确,你希望你的罐子 100% 是自包含的。
这将很难实现。
您项目的用户将需要一些起点来引导配置。您将需要提供一些文件。无论如何,我可以提出以下建议。
在您的 DAO、用户 @Repository @Autowire 等中坚持尽可能匹配的注释。这样,您只需要求 jar 的用户将以下内容添加到他们的应用程序上下文中
<context:component-scan base-package="your.dao.package"/>
使用默认的 persistence.xml 命名标准并将您的 persistence.xml 放在 META-INF 目录下。不要指定持久性单元名称。如果用户将定义没有 persistenceUnitName 的 EntityManagerFactory,它将加载您的配置。用户必须使用 emf jpaVendorAdapter 和 datasource 属性来定义自定义数据库配置,例如:
<bean id="emf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
</bean>
<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="database" value="HSQL" />
<property name="showSql" value="true" />
<property name="databasePlatform" value="org.hibernate.dialect.HSQLDialect" />
</bean>
如您所见,在遵守弹簧约定时,您可以接近自包含 jar。无论如何,你需要给你的 jar 用户一些提示