java代码中获取项目的静态文件,如获取 properties 文件内容是必不可少的。

Spring 下只需要通过 @Value 获取配置文件值

<!-- 资源文件-->
<util:properties id="application" location="classpath:config.properties" />
@Value("#{application['pom.credit.url']}")
private void setCreditUrl(String url){
this.creditUrl = url;
}

Spring boot 下我们只需要在 config 目录下的 application.yml 中写入配置值如:

local-info:
school-id: test
通过 @ConfigurationProperties 注解加载 local-info 下的配置,通过 set 方法注入 school-id 
@ConfigurationProperties(prefix="local-info")
@Component
public class LocalConfigEntity {
private String schoolId;

之后再需要用到 schoolId 则通过 get 方法获取值

上面简单的提及下通过框架我们可以很容易获取到配置文件账值,但当我们离开这些框架,该如何读取这些配置文件,上图解:

用 Properties 类读取 properties 文件

static {
Properties prop = new Properties();
InputStream in = UserUtil.class.getResourceAsStream("/config.properties");
try {
prop.load(in);
param1 = prop.getProperty("param1").trim();
param2 = prop.getProperty("param2").trim();
} catch (IOException e) {
e.printStackTrace();
}
}

这里补充 classpath 路径说明

classpath 路径在每个J2ee项目中都会用到,即WEB-INF下面的classes目录,所有src目录下面的java、xml、properties等文件编译后都会在此,所以在开发时常将相应的xml配置文件放于src或其子目录下;

引用classpath路径下的文件,只需在文件名前加classpath:(需保证该文件确实位于classpath路径下);

如:

Xml代码  
  1. <param-value>classpath:applicationContext-*.xml</param-value>

或者引用其子目录下的文件,如

Xml代码  
  1. <param-value>classpath:context/conf/controller.xml</param-value>

classpath* 的使用:当项目中有多个classpath路径,并同时加载多个classpath路径下(此种情况多数不会遇到)的文件,*就发挥了作用,如果不加*,则表示仅仅加载第一个classpath路径,代码片段:

Xml代码  
  1. <param-value>classpath*:context/conf/controller*.xml</param-value>

########################################################

首先  classpath是指 WEB-INF文件夹下的classes目录 
解释classes含义: 
1.存放各种资源配置文件 eg.init.properties log4j.properties struts.xml 
2.存放模板文件         eg.actionerror.ftl 
3.存放class文件       对应的是项目开发时的src目录编译文件 
总结:这是一个定位资源的入口 

如果你知道开发过程中有这么一句话:惯例大于配置 那么也许你会改变你的想法 
对于第二个问题  
这个涉及的是lib和classes下文件访问优先级的问题:  lib>classes 
对于性能的影响应该不在这个范畴

########################################################

注意: 
用classpath*:需要遍历所有的classpath,所以加载速度是很慢的,因此,在规划的时候,应该尽可能规划好资源文件所在的路径,尽量避免使用 classpath* 

网上还提到了用反射获取 properties 文件路径:

Java项目中读取properties文件,以及六种获取路径的方法

五种方式让你在java中读取properties文件内容不再是难题

最新文章

  1. .Net中使用无闪刷新控件时提示框不显示
  2. 【Linux】lsof 命令,记一次端口占用查询
  3. objective-c高德地图时时定位
  4. ADN用户的产品激活方法
  5. Entity Framework Code First ---EF Power Tool MySql
  6. Objective-C的IO流
  7. 在CentOS之上搭建VMware Player 7
  8. [HDU 4747] Mex (线段树)
  9. 走进React的学习之路
  10. 怎么添加项目到SVN上面
  11. Install Oracle 10g on Red Hat Linux 5.3 Step by Step
  12. angularJS自定义过滤器、服务和指令
  13. 一步一步学c#(四):继承
  14. 解决 U盘安装Windows Server 2012 R2 报错 Windows 无法打开所需的文件 Sources\install.wim
  15. 异步陷阱之IO
  16. mybatis学习笔记(四)-- 为实体类定义别名两种方法(基于xml映射)
  17. HTML(四)HTML常用标签(a,img)
  18. Scrapy的piplines.py存储文件和存储mongodb
  19. sqlalchemy关于时间的数据类型
  20. redis 集群搭建: redis-cluster

热门文章

  1. C# Linq找不到行或已更改
  2. Java导出引用jar包的文件
  3. TCP/IP,HTTP,HTTPS,WEBSocket协议
  4. JavaBean 与 EJB 的区别
  5. C# 正则提取字符串(提取一个或多个)
  6. 【Leetcode】86. Partition List
  7. [转帖] dd 命令图解
  8. 数据库事务的四大特性以及4种事务的隔离级别-以及对应的5种JDBC事务隔离级别
  9. Day22-Django之信号
  10. Google题解