使用Spring+Mybatis写一个jar项目,将项目打包后外部配置文件properties无法读取的问题

使用Spring+Mybatis写了一个jar项目,使用GUI作为前台页面,将项目打包为jar,依赖包放到jar文件同目录下的libs文件中,配置文件xml和properties放到jar文件同目录下的config文件中,同时生成logs文件夹放置日志文件。文件目录如下图

文件目录

刚开始打包之后出现无法读取配置文件的情况,错误为FileNotFoundException,将application.xml的读取路径改为绝对路径后可以读取xml文件

String path = System.getProperty("java.class.path");
int firstIndex = path.lastIndexOf(System.getProperty("path.separator")) + 1;
int lastIndex = path.lastIndexOf(File.separator) + 1;
path = path.substring(firstIndex, lastIndex);

ApplicationContext ac = new ClassPathXmlApplicationContext("file:" + path + "applicationcontext.xml");

但是xml中的数据库配置文件db.properties文件无法读取,同样为FileNotFound

<context:property-placeholder location="classpath:db.properties"/>
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
        <property name="driverClassName" value="${oracle.driverClassName}"></property>
        <property name="url" value="${oracle.url}"></property>
        <property name="username" value="${oracle.username}"></property>
        <property name="password" value="${oracle.password}"></property>
</bean>

将代码中的classpath换为classpath*之后,程序执行不报错了,但是bean中的占位符${}直接按照字符串输出,应该也是没有读取到文件导致的

后来从百度了各种方法都没有解决问题,直到看到了这篇博客  Spring 中注入bean的properties配置文件位置问题解决  ,按照其中的方法对xml中的配置进行更改后问题成功解决

更改后的代码

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
        <property name="location" value="file:${user.dir}/config/db.properties"/>
</bean>
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
        <property name="driverClassName" value="${oracle.driverClassName}"></property>
        <property name="url" value="${oracle.url}"></property>
        <property name="username" value="${oracle.username}"></property>
        <property name="password" value="${oracle.password}"></property>
</bean>

其中systemPropertiesModeName的值SYSTEM_PROPERTIES_MODE_OVERRIDE是指可以从JVM的数据中获取信息,当加上这个属性的设置之后${user.dir}就会获取到当前执行的jar文件的路径。

至此问题成功解决

开发一个基于 SpringMVC + Spring + MyBatis 框架的 Java Web 项目,需要经过以下几个步骤: 1. 环境搭建 首先,需要安装 JDK,并配置好环境变量。然后,安装 Eclipse 或者 IntelliJ IDEA 等集开发环境,安装 Tomcat 服务器,并将其与 IDE 集。最后,下载 SpringMVC、SpringMyBatis 等框架的jar包,并将其添加到项目的 classpath 中。 2. 建立数据库 根据项目需求,建立相应的数据库,并设计好表结构。可以使用 MySQL、Oracle 等关系型数据库,也可以使用 NoSQL 数据库。 3. 搭建框架 使用 Maven 或 Gradle 等构建工具创建一个基本的 Maven 项目。在 pom.xml 文件中添加所需的依赖,如 SpringMVC、SpringMyBatis 等。然后,创建 Spring 配置文件 applicationContext.xml 和 SpringMVC 配置文件 spring-mvc.xml 并配置相关信息。 4. 编代码 根据项目需求,编相应的 Java 代码,包括 Entity、DAO、Service、Controller 等。在 Entity 中定义与数据库表对应的字段,DAO 中定义数据库操作的方法,Service 中提供业务逻辑处理的方法,Controller 中处理客户端请求和响应。 5. 部署项目 在 Tomcat 中部署项目,并启动 Tomcat 服务器。在浏览器中输入项目的 URL 地址,可以访问项目的首页。通过不断地调试和修改,最终完整个项目的开发和部署。 以上就是基于 SpringMVC + Spring + MyBatis 框架开发 Java Web 项目的基本步骤,希望对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值