springboot如何读取模板文件

目录
  • springboot读取模板文件
    • 第一种
    • 第二种
    • 第三种
  • SpringBoot读取配置文件信息
    • 一、创建配置文件
      • application.properties
      • application.yml
    • 二、读取配置信息
      • @value
      • @ConfigurationProperties
    • 三、读取指定环境配置

springboot读取模板文件

前言:resources下的template目录下的模版文件

templateDir: template/

第一种

  Resource resource = new ClassPathResource(templateDir + templateName);

在linux生产环境下无法读取,也可能是其他原因,内网不好看错误

第二种

 ResourceLoader resourceLoader = new DefaultResourceLoader();
 Resource resource = resourceLoader.getResource("classpath:template/"+templateName);
 InputStream inputStream =resource.getInputStream() ;

各种环境下都能读取

第三种

 Resource resource = new PathResource(templateDir + "黑灰数据分享模板.xls");
        File file = resource.getFile();

不确定 linux环境

SpringBoot读取配置文件信息

一、创建配置文件

当我们新建一个SpringBoot工程的时候,在资源文件夹resources下,会自动生成默认的application.properties配置文件。

application.properties

其书写风格为小数点间隔级别书写全路径。这个老代码里面见的比较多。

示例如下:

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/demo
spring.datasource.username=root
spring.datasource.password=root
# 演示内容
demo.username=test
demo.password=test

application.yml

application.yml和application.properties有所不同,它采用“树形结构”的书写风格,减少了冗余的代码。

注意:变量的值和变量名之间有且仅有一个空格。字符串变量不需要引号,当然加上了也不会报错。

示例如下:

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/demo
    username: root
    password: root

# 演示内容
demo:
  username: test
  password: test

二、读取配置信息

@value

如果是要读取单个或几个配置值的信息,可以直接在业务Bean中引入这个成员变量,并加上@value注解声明。

// 其他包
import org.springframework.beans.factory.annotation.Value;
@Component
public class ReadConfigValueDemo {

 @Value("${demo.username}")
    private String username;

 @Value("${demo.password}")
    private String password;
 // 业务代码

}

@ConfigurationProperties

如果需要读取的配置文件很多,或则是一组相关的配置文件,希望在系统组装起来复用,那么我们可以采用构建配置Bean的方式。

1. 添加pom依赖

这是为了第二步配置Bean的时候能扫描到配置文件信息

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

2. 创建配置Bean

通过ConfigurationProperties的prefix前缀属性,我们可以指定一组配置值,注意属性名要和配置文件一致,类名无所谓。

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix="demo")
public class DemoConfig {
    private String username;
    private String password;
 public String getUsername() {
        return username;
    }
 public String getPassword() {
        return password;
    }
}

3. 业务代码中使用

哪里需要这一组配置文件,就通过@Resource或则@Autowired注解自动注入即可。

注意:注入配置Bean的类,本身必须也是Spring管理下的一个Bean,否则会注入null值。这种情况在一些提供静态方法的工具类上可能出现。

@Service
public class DemoServiceImpl{
 @Resource
    private DemoConfig demoConfig;
    public void test() {
     // 读取配置Bean中的值
  System.out.println(demoConfig.getUsername());
 }
}

三、读取指定环境配置

SpringBoot项目支持多套配置,例如生产环境prod、开发环境dev、测试环境test等。

以application.yml格式为例:

# 当前启用dev配置文件
spring:
  profiles:
    active: dev

这种情况下,application.yml和application-dev.yml均能生效。同名的配置项以具体环境下的配置文件为主。

如果我们想指定配置Bean仅在某环境下启用,可以做如下处理:

@Profile("dev") // 仅在dev环境下生效
@Component
@ConfigurationProperties(prefix="demo")
public class DemoConfig {
 // ...属性
}
@Profile("!prod") // prod环境下不生效
@Component
@ConfigurationProperties(prefix="demo")
public class DemoConfig {
 // ...属性
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Spring Boot 读取静态资源文件的方法

    一.需求场景 有时候我们需要在项目中使用一些静态资源文件,比如城市信息文件 countries.xml,在项目启动后读取其中的数据并初始化写进数据库中. 二.实现 静态资源文件 countries.xml 放在 src/main/resources 目录下 使用 Spring 的 ClassPathResource来实现 : Resource resource = new ClassPathResource("countries.xml"); File file = resource.

  • 使用springboot打包后的文件读取方式

    目录 springboot打包后的文件读取 文件打包问题 文件读取问题 Springboot打包后读取不到文件 解决办法1 失败.. 解决办法 2 springboot打包后的文件读取 在使用了springboot打包后的项目中,牵扯到项目目录中文件读取工作时,明明在开发时功能正常,但是一到发布到线上环境就会报文件找不到,路径不存在的问题. 由于在开发过程中,文件就在我们本地目录中存在,因此普通正常文件的读写功能不受影响,而一旦打包后,可能会由于我们自己的文件目录放置原因一是没有被正确打包到ja

  • SpringBoot读取Resource下文件的4种方法

    SpringBoot读取Resource下文件 最近在项目中涉及到Excle的导入功能,通常是我们定义完模板供用户下载,用户按照模板填写完后上传:这里待下载模板位置为resource/excelTemplate/test.xlsx,尝试了四种读取方式,并且测试了四种读取方式分别的windows开发环境下(IDE中)读取和生产环境(linux下jar包运行读取). 第一种: ClassPathResource classPathResource = new ClassPathResource("e

  • Springboot读取templates文件html代码实例

    SpringBoot里面没有我们之前常规web开发的WebContent(WebApp),它只有src目录 在src/main/resources下面有两个文件夹,static和templates springboot默认 static中放静态页面,而templates中放动态页面 在不使用第三方jar包的情况下, Springboot不能直接访问templates下的静态页面, 需要加其他jar包依赖. 代码如下 import org.slf4j.Logger; import org.slf4

  • springboot如何读取模板文件

    目录 springboot读取模板文件 第一种 第二种 第三种 SpringBoot读取配置文件信息 一.创建配置文件 application.properties application.yml 二.读取配置信息 @value @ConfigurationProperties 三.读取指定环境配置 springboot读取模板文件 前言:resources下的template目录下的模版文件 templateDir: template/ 第一种 Resource resource = new

  • springboot配置文件读取pom文件信息方式

    目录 配置文件读取pom文件信息 解决的问题 解决 修改后的写法 maven打包命令 可能会出现的一些问题 Pom文件依赖配置说明 scope依赖范围 配置文件读取pom文件信息 解决的问题 springboot(当然别的也可以)多环境切换需要修改配置文件硬编码,打包时不够方便. 解决 配置文件能读取pom文件中的配置,根据命令选择不同配置注入springboot的配置文件中 pom配置文件: <!-- 环境 --> <profiles> <!-- 开发 --> <

  • ASP使用FSO读取模板的代码

    m_Root是文件名,可以使用相对路径. 调用调用示例: Response.Write(LoadFile("Test.htm")) Function LoadFile(m_Root) Dim Filename,fso,hndFile Filename = m_Root If Right(Filename, 1)<>"/" And Right(Filename, 1)<>"\" Then Filename = Filenam

  • 使用Java读取Word文件的简单例子分享

    java读取word文档时,虽然网上介绍了很多插件poi.java2Word.jacob.itext等等,poi无法读取格式(新的API估计行好像还在处于研发阶段,不太稳定,做项目不太敢用):java2Word.jacob容易报错找不到注册,比较诡异,我曾经在不同的机器上试过,操作方法完全一致,有的机器不报错,有的报错,去他们论坛找高人解决也说不出原因,项目部署用它有点玄:itxt好像写很方便但是我查了好久资料没有见到过关于读的好办法.经过一番选择还是折中点采用rtf最好,毕竟rtf是开源格式,

  • python3 循环读取excel文件并写入json操作

    文件内容: excel内容: 代码: import xlrd import json import operator def read_xlsx(filename): # 打开excel文件 data1 = xlrd.open_workbook(filename) # 读取第一个工作表 table = data1.sheets()[0] # 统计行数 n_rows = table.nrows data = [] # 微信文章属性:wechat_name wechat_id title abstr

  • springboot openfeign从JSON文件读取数据问题

    对openfeign不清楚的同学可以参考下我的这篇文章:springboot~openfeign从此和httpClient说再见 对于openfeign来说,帮助我们解决了服务端调用服务端的问题,你不需要关心服务端的URI,只需要知道它在eureka里的服务名称即可,同时你与服务端确定了服务方法的参数和返回值之后,我们可以在单元测试时mock这些服务端方法即可,真正做到了单元测试,而不需要与外界资源进行交互. 今天主要说一下在openfeign里读取JSON文件的问题,我们将测试所需要的数据存储

  • SpringBoot读取properties文件配置项过程解析

    使用SpringBoot开发过程中,难免需要配置相关数据项,然后在Java代码中@Autowired注入并使用. 我们应该如何读取properties文件中的配置项呢? 基于SpringBoot项目,配置项一般都存放在application.properties文件中.有2种常用的方法: 1.使用@Value注解标注在Field上面 2.使用@ConfigurationProperties注解标注在类或者方法上 为了讲解方便,附上application.properties文件配置好的数据项 如

  • SpringBoot四种读取properties文件的方式(小结)

    前言 在项目开发中经常会用到配置文件,配置文件的存在解决了很大一份重复的工作.今天就分享四种在Springboot中获取配置文件的方式. 注:前三种测试配置文件为springboot默认的application.properties文件 #######################方式一######################### com.zyd.type3=Springboot - @ConfigurationProperties com.zyd.title3=使用@Configura

  • 解决springboot 多线程使用MultipartFile读取excel文件内容报错问题

    springboot项目开启多线程 启动类加注解开启 @EnableAsync,实现类方法加注解 @Async 前端页面 报错信息 java.io.FileNotFoundException: C:\Users\dongao\AppData\Local\Temp\tomcat.1255209411477782290.8051\work\Tomcat\localhost\ROOT\upload_7d7b99e5_38da_4a03_93e0_bff20cb48022_00000000.tmp (系

随机推荐