Springboot 创建的maven获取resource资源下的文件的两种方式
Springboot 创建的maven项目 打包后获取resource下的资源文件的两种方式:
资源目录:
resources/config/wordFileXml/wordFileRecord.xml 文件信息
获取方式如下:
一:代码打成jar包,lib文件夹和config配置文件同时复制到同一个linux文件夹里面,启动jar文件,获取当前config文件夹的配置文件资源
资源结构:
获取方式:
/**
* 获取lib + jar + resource 方式的resource配置文件中的文件
*/
Document document = Dom4jUtil.getDocument("config/wordFileXml/wordFileRecord.xml"); //指定未编译,直接IntelliJ IDEA 创建的maven目录 //调用下面方法..... /**
* 根据xml路径获得Document文本对象
* 微服务,打成完成的jar,不能再
* @param path xml路径
* @return Document对象
*/
public static Document getDocument(String path) { System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>:"+path);
/**
* 获取普通服务的方式
* lib + jar + resource配置文件
*/ SAXReader reader = new SAXReader();
Document document = null;
try {
//获取当前线程
Thread t=Thread.currentThread();
//获取当前线程的classLoader
ClassLoader c=t.getContextClassLoader();
//获取resouce下面指定文件的file路径(相对路径转绝对路径,将%20的乱码转为空格)
String filePath=c.getResource(path).getFile().replaceAll("%20", " ");
document=reader.read(filePath);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return document;
}
二:代码+lib + resource配置文件 全部打成jar包,直接启动jar文件,获取当前config文件夹的配置文件资源(通过stream 流的方式获取配置信息)
资源结构:
获取方:
/**
* 微服务获取resource配置文件方式
* lib、代码、打包到整个jar包中
* 获取jar包中的resource配置文件中的文件
*/
Document document = Dom4jUtil.getDocument("/BOOT-INF/classes/config/wordFileXml/wordFileRecord.xml"); //指定编译后的jar包中的文件目录,否则找不到 //调用下面方法....... /**
* 根据xml路径获得Document文本对象
* 微服务,打成完成的jar,不能再
* @param path xml路径
* @return Document对象
*/
public static Document getDocument(String path) { System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>:"+path); /**
* 微服务获取resouce配置文件方式
* jar包,resouce,代码,全部再一个jar里面,
* 通过流的形式获取配置文件,然后转为xml文件
*/
Document document = null;
Thread t=Thread.currentThread();
//返回读取指定资源的输入流
InputStream is = t.getClass().getResourceAsStream(path);
//字节流转为字符流,并输出拼接为字符串
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String s="";
String xml="";
try {
//循环输出,拼接
while((s=br.readLine())!=null){
xml+=s;
}
} catch (IOException e) {
log.error("Dom4jUtil ———> getDocument 获取xml流文件信息报错,原因:" +e.getMessage());
// e.printStackTrace();
}
try {
//将字符串转换为xml格式,返回document
document = DocumentHelper.parseText(xml);
} catch (DocumentException e) {
log.error("Dom4jUtil ———> getDocument 创建document对象错误,原因:" +e.getMessage());
document = null;
// e.printStackTrace();
} return document;
}
Springboot 创建的maven获取resource资源下的文件的两种方式的更多相关文章
- 转载:Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式
Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式 出自:http://www.cnblogs.com/top5/archive/2012/08/04/2623464.html 关 ...
- spring boot 打jar包,获取resource路径下的文件
前言:最近在spring boot项目静态类中获取resource路径下文件,在idea中启动都可以获取,但是打包后变成了jar包 就无法获取到. 我想到了两种方法,一种是根据http访问静态资源比如 ...
- Java获取Resource目录下的文件
工程结构: 有两种方式: Java代码中的类,要获取Resource资源文件目录下文件 绝对路径寻址 String s1 = this.getClass().getResource("/te ...
- Springboot以Tomcat为容器实现http重定向到https的两种方式
1 简介 本文将介绍在Springboot中如何通过代码实现Http到Https的重定向,本文仅讲解Tomcat作为容器的情况,其它容器将在以后一一道来. 建议阅读之前的相关文章: (1) Sprin ...
- 探讨Netty获取并检查Websocket握手请求的两种方式
在使用Netty开发Websocket服务时,通常需要解析来自客户端请求的URL.Headers等等相关内容,并做相关检查或处理.本文将讨论两种实现方法. 方法一:基于HandshakeComplet ...
- @Autowired获取配置文件中被注入实例的两种方式
一.说明 二.那么在JavaBean中如何通过@Autowired获取该实例呢?有两种方式: 1.直接获取 @RunWith(SpringJUnit4ClassRunner.class) @Conte ...
- springmvc获取资源文件的两种方式(超简单)
1 比如我们在sc目录下新建一个db.properties文件内容如下 DriverClass=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306 ...
- SpringBoot定时任务 - 集成quartz实现定时任务(单实例和分布式两种方式)
最为常用定时任务框架是Quartz,并且Spring也集成了Quartz的框架,Quartz不仅支持单实例方式还支持分布式方式.本文主要介绍Quartz,基础的Quartz的集成案例本,以及实现基于数 ...
- 【Azure Developer】【Python 】使用 azure.identity 和 azure.common.credentials 获取Azure AD的Access Token的两种方式
问题描述 使用Python代码,展示如何从Azure AD 中获取目标资源的 Access Token. 如要了解如何从AAD中获取 client id,client secret,tenant id ...
随机推荐
- history配置
/etc/profile配置文件中,末尾增加如下参数项: HFILE=`who -m | awk '{print $1}'`readonly HISTFILE=/var/history/$HFILE- ...
- Js获取或计算时间的相关操作
//获取当前日期(年月日),如:2017-12-18 function getNowDate() { var dd = new Date(); var y = dd.getFullYear(); // ...
- Vue的Ajax(vue-resource/axios)
一 简介 1.vue本身不支持发送AJAX请求,需要使用vue-resource(vue1.0版本).axios(vue2.0版本)等插件实现 2.axios是一个基于Promise的HTTP请求客户 ...
- volatile和指令重排序
volatile 的作用 1 精致指令重排序 2 多线程访问同一个变量的时候,每次都是取最新的,而不会使用当前cpu缓存的那一份.
- org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.connections.spi.ConnectionProvider]
从hibernate3升级到4应该会遇到 应该添加引用 <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-c3p0 ...
- Springboot 之 启动报错-Cannot determine embedded database driver class for database type NONE
Springboot 之 启动报错-数据库 springboot项目在启动时,报如下错误: Error starting ApplicationContext. To display the auto ...
- 2019-7-29-Roslyn-使用-Target-替换占位符方式生成-nuget-打包
title author date CreateTime categories Roslyn 使用 Target 替换占位符方式生成 nuget 打包 lindexi 2019-7-29 10:1:1 ...
- input光标错位
文档结构 <div class="noteWrap"> <input type="text" placeholder="写留言&qu ...
- springboot框架实现启动项目执行指定代码
说明: 当有写代码需要在项目启动时执行的时候(即项目启动完成前),可以使用这个方法. 步骤: 创建一个启动类并在类上打上@Component注解 让这个类实现CommandLineRunner接口 重 ...
- laravel--设置不需要csrfToken校验的接口
一般是前后端分离或者支付宝响应的时候需要不设置csrfToken校验的接口,laravel推荐使用passport安全校验设计接口