Spring 属性文件在';它在一个罐子里
我的属性文件有问题,因为我在JAR中部署了我的应用程序。当它位于WEB-INF/classes目录中时,没有问题。我的问题只发生在JAR中的属性文件上 让我解释一下。我将简化我的代码 我的应用程序处理称为IPX的业务对象(知道它是什么没用) 有一个名为IpxDaoImpl的DAO类,它具有字符串属性,即SQL查询Spring 属性文件在';它在一个罐子里,spring,properties,jar,classpath,Spring,Properties,Jar,Classpath,我的属性文件有问题,因为我在JAR中部署了我的应用程序。当它位于WEB-INF/classes目录中时,没有问题。我的问题只发生在JAR中的属性文件上 让我解释一下。我将简化我的代码 我的应用程序处理称为IPX的业务对象(知道它是什么没用) 有一个名为IpxDaoImpl的DAO类,它具有字符串属性,即SQL查询 public class IpxDaoImpl implements IpxDao extends SimpleJdbcDaoSupport { private String li
public class IpxDaoImpl implements IpxDao extends SimpleJdbcDaoSupport {
private String listAllIpxSql; // query for listing IPX in Database
public void listAllIpx() {
// Does a query in Database using the variable listAllIpxSql
// ...
}
public void setListAllIpxSql(String listAllIpxSql) {
this.listAllIpxSql = listAllIpxSql;
}
}
此类在名为appContext-dao.xml的配置xml文件中定义。它包括:
<bean id="ipxDao" class="com.IpxDaoImpl" parent="myGenericDao">
<property name="listAllIpxSql" value="${ipx.list}" />
</bean>
<context:property-placeholder location="classpath*:**/sql.properties" />
ipx.list=SELECT * FROM IPX
现在,当我在WEB-INF/classes中部署应用程序时,一切都很好。但是我们有一个集成环境,在那里我们必须生成JAR。我上面提到的所有文件都在同一个jar中。然后,当我部署时,出现了以下错误:
无法解析占位符“ipx.list”
似乎找不到属性文件sql.properties
我已经尝试提取这个属性文件,并将它放在WEB-INF/classes目录下的适当文件夹中。现在它开始工作了
那么,我的代码有什么问题?是那个洞穴探险者吗?
提前谢谢
Cedric尝试使用
类路径:/sql.properties
参考文献:
请注意,“classpath*:”与Ant样式模式组合时
将仅在前至少一个根目录下可靠地工作
模式启动,除非实际目标文件驻留在该文件中
系统
有关详细信息,请参阅。不确定这是否是您的问题,但属性占位符中的“classpath”后面不应该有星号。sql.properties存储在项目中的什么位置?它在生成的JAR中的什么位置?有几个sql.properties,在不同的文件夹中,但有一个共同的根(类似于com/mypackages)。有几个sql.properties文件,所以我宁愿尝试classpath*:com/mypackages/**/sql.properties它可以工作!我离开了classpath*,但是我写了包含不同sql.properties文件的公共文件夹的开头。因此,这个解决方案可以工作:classpath*:com/mypackages/**/sql.properties谢谢!