在web.xml中读取jar的spring config xml
我创建了一个maven多模块maven项目。包含DAO模块。在这个模块中我使用hibernate和spring .i安装它。然后我创建一个独立的maven web项目。我使用这个jar。我不想使用classpath:xxx.xml。因为我希望其他人使用我的jar而不知道我的xml的名字,因为那个jar包含许多xml。我想知道如何解决这个问题。我试着写一个新的春天听众?或其他方式。谢谢。
答案 0 :(得分:0)
如果我理解你的话,你希望你的罐子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用户提供一些提示