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资源下的文件的两种方式的更多相关文章

  1. 转载:Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式

    Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式 出自:http://www.cnblogs.com/top5/archive/2012/08/04/2623464.html 关 ...

  2. spring boot 打jar包,获取resource路径下的文件

    前言:最近在spring boot项目静态类中获取resource路径下文件,在idea中启动都可以获取,但是打包后变成了jar包 就无法获取到. 我想到了两种方法,一种是根据http访问静态资源比如 ...

  3. Java获取Resource目录下的文件

    工程结构: 有两种方式: Java代码中的类,要获取Resource资源文件目录下文件 绝对路径寻址 String s1 = this.getClass().getResource("/te ...

  4. Springboot以Tomcat为容器实现http重定向到https的两种方式

    1 简介 本文将介绍在Springboot中如何通过代码实现Http到Https的重定向,本文仅讲解Tomcat作为容器的情况,其它容器将在以后一一道来. 建议阅读之前的相关文章: (1) Sprin ...

  5. 探讨Netty获取并检查Websocket握手请求的两种方式

    在使用Netty开发Websocket服务时,通常需要解析来自客户端请求的URL.Headers等等相关内容,并做相关检查或处理.本文将讨论两种实现方法. 方法一:基于HandshakeComplet ...

  6. @Autowired获取配置文件中被注入实例的两种方式

    一.说明 二.那么在JavaBean中如何通过@Autowired获取该实例呢?有两种方式: 1.直接获取 @RunWith(SpringJUnit4ClassRunner.class) @Conte ...

  7. springmvc获取资源文件的两种方式(超简单)

    1 比如我们在sc目录下新建一个db.properties文件内容如下 DriverClass=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306 ...

  8. SpringBoot定时任务 - 集成quartz实现定时任务(单实例和分布式两种方式)

    最为常用定时任务框架是Quartz,并且Spring也集成了Quartz的框架,Quartz不仅支持单实例方式还支持分布式方式.本文主要介绍Quartz,基础的Quartz的集成案例本,以及实现基于数 ...

  9. 【Azure Developer】【Python 】使用 azure.identity 和 azure.common.credentials 获取Azure AD的Access Token的两种方式

    问题描述 使用Python代码,展示如何从Azure AD 中获取目标资源的 Access Token. 如要了解如何从AAD中获取 client id,client secret,tenant id ...

随机推荐

  1. python学习笔记4.2_正则表达式

    常用正则表达式:http://tool.chinaz.com/regex/ 1.正则表达式:提供了一种在文本中灵活查找或匹配字符串模式的方法.单个表达式通常被称为regex. 2.python的re模 ...

  2. [计蒜之道2019 复赛 A]外教 Michale 变身大熊猫

    [计蒜之道2019 复赛 A]外教 Michale 变身大熊猫 Online Judge:2019计蒜之道 复赛 A Label:LIS+线段树.树状数组+快速幂(模逆元) 题目描述 题解: pre. ...

  3. C语言复制数组

    直接上代码,分别是栈上开辟内存,堆上开辟内存 #include <stdio.h> #include <stdlib.h> void test01(){ ]; printf(& ...

  4. 最全的CSS hack没有之一

    1.何为HACK? 简单的说,HACK就是只有特定浏览器才能识别这段hack代码.Hack也可以说是让前端最为头疼的问题,因为要写N多种兼容代码.当然,IE是最让人蛋疼的. 一般来说,CSS HACK ...

  5. jeecmsv8 shiro 分析

      源代码注释可见 https://github.com/chenbo19867758/jeecmsV8-BoBo.git 1.后台登录页面 /jeeadmin/jeecms/login.do 1 w ...

  6. VS C++/ClI调用C++ 外部Dll无法查看变量值

    C#项目调用C++/ClI项目,C++/ClI项目又引用了外部C++ dll时 C++/CLI代码中在调试时无法查看native 变量的值 解决方法:C#项目右键属性-->Debug--> ...

  7. Java内功修炼系列一反射

    “JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制 ...

  8. Python爬虫工程师必学——App数据抓取实战

    Python爬虫工程师必学 App数据抓取实战 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大 ...

  9. 禅道Mysql默认密码修改

    1.安装禅道之后进入MySql数据库时提示密码错误:(禅道数据库默认用户名和密码admin,密码无) 2.此时需要修改MySql用户名和密码才可进入禅道数据库: 3.在Linux中执行命令   /op ...

  10. Javascript-循环输出菱形,并可菱形自定义大小

    var Cen = 6;//定义菱形中部为第几行(起始值为0) //for循环输出菱形 document.write("<button onclick='xh()'>点我for循 ...