springboot项目打成jar后外部加载配置文件

前言:很多时候我们都会在resourc目录下写配置信息,如下。

        通常使用@PropertySource()注解就可以。也有其他方式,这里不做演示,感兴趣的朋友可以去试试;

        下面是写法:交给spring管理,设置前缀,设置配置文件名称。

        这样我们就完成了内部配置文件加载。

/**
 * @author Eliauk
 * @version 1.0
 * @description: TODO
 * @date 2022/11/11 13:38
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Configuration
@ConfigurationProperties(prefix = "user")
@PropertySource(value = {"classpath:temp.properties"})
public class User {
    private String username;
    private String account;
    private String password;

}
#temp.properties
user.username=xiaohe
user.account=123
user.password=123

#temp1.properties
user.username=xiaohe
user.account=123
user.password=123

        最近项目要求用java写个websocket客户端系统,用来桥接外部系统进行实时行情数据推送。由于只是一个小组件,要求打成jar部署到已有的一套自动化平台上,所以配置文件需要外配。翻spring文档发现可以支持。

        写法如下:

/**
 * @author Eliauk
 * @version 1.0
 * @description: TODO
 * @date 2022/11/11 13:38
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Configuration
@ConfigurationProperties(prefix = "user")
@PropertySource(value = {"file:./temp.properties"})
public class User {
    private String username;
    private String account;
    private String password;

}

将配置文件temp.properties放在和jar同级目录;即可。

        由于系统需要调试和修改,所以我自己本地启动是很频繁的;这就带来一个问题,每次打包我都需要将路径改一下,本地启动的时候又要改回classpath,后面就将二者都配置了进去。

@PropertySource(value = {"classpath:temp.properties","file:./temp.properties"},ignoreResourceNotFound = true)

        当我们配置多路径,且多路径下配置文件都存在时,springboot会都加载且会覆盖相同内容。所以当我们配置信息只区分外部和内部路径、内容完全相同时,将file路径写在后面就可以了。当我们本地启动时,因为不存在file路径,所以会加载classpath;当jar启动时,file路径会覆盖classpath路径下的内容;

        ignoreResourceNotFound = true 一定要加上,否则找不到会报错。加上之后会忽略找不到的配置文件。

        对应加载信息源码附上:

ConfigurationClassParser.class
/**
	 * Process the given <code>@PropertySource</code> annotation metadata.
	 * @param propertySource metadata for the <code>@PropertySource</code> annotation found
	 * @throws IOException if loading a property source failed
	 */
	private void processPropertySource(AnnotationAttributes propertySource) throws IOException {
		String name = propertySource.getString("name");
		if (!StringUtils.hasLength(name)) {
			name = null;
		}
		String encoding = propertySource.getString("encoding");
		if (!StringUtils.hasLength(encoding)) {
			encoding = null;
		}
		String[] locations = propertySource.getStringArray("value");
		Assert.isTrue(locations.length > 0, "At least one @PropertySource(value) location is required");
		boolean ignoreResourceNotFound = propertySource.getBoolean("ignoreResourceNotFound");

		Class<? extends PropertySourceFactory> factoryClass = propertySource.getClass("factory");
		PropertySourceFactory factory = (factoryClass == PropertySourceFactory.class ?
				DEFAULT_PROPERTY_SOURCE_FACTORY : BeanUtils.instantiateClass(factoryClass));

		for (String location : locations) {
			try {
				String resolvedLocation = this.environment.resolveRequiredPlaceholders(location);
				Resource resource = this.resourceLoader.getResource(resolvedLocation);
				addPropertySource(factory.createPropertySource(name, new EncodedResource(resource, encoding)));
			}
			catch (IllegalArgumentException | FileNotFoundException | UnknownHostException ex) {
				// Placeholders not resolvable or resource not found when trying to open it
				if (ignoreResourceNotFound) {
					if (logger.isInfoEnabled()) {
						logger.info("Properties location [" + location + "] not resolvable: " + ex.getMessage());
					}
				}
				else {
					throw ex;
				}
			}
		}
	}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目申报系统(jsp+sql2000) 1.JDK的安装与配置 Win2000 Server 或 Win2000 professional 操作系统下,JDK的安装步骤如下: (1) 双击j2sdk-1_4_1-windows-i586可以开始安装; (2) 在安装过程中使用默认配置即可。JDK的默认安装目录为C:\jdk; (3) 重新启动计算机; (4) 更新环境变量在系统桌面中; (5) 右击[我的电脑]图标; (6) 选择[属性]命令; (7) 弹出[系统特性]对话框。在[高级]选项卡中; (8) 单击[环境变量]按钮; (9) 弹出[环境变量]对话框; (10) 该对话框分为[Administrator 的用户变量]和[系统变量]两个选项组。在[系统变量]选项组中; (11) 找到path变量后单击[编辑]按钮; (12) 弹出[编辑系统变量]对话框。在[变量值]文本框中输入“c:\jdk\bin”,然后单击[确定]按钮。同时新建CLASSPATH变量; (13) 在[系统变量]选项组中单击[新建]按钮,在[变量名]文本框中输入“CLASSPATH”,在[变量值]文本框中输入“c:\jdk\lib\tools.jar; c:\jdk\lib\dt.jar;” 然后单击[确定]按钮。用同样的方法把c:\jdk添加到JAVA_HOME环境变量中; (14) 单击[应用]按钮再单击[确定]按钮。至此JDK的安装及配置完成。 2.TOMCAT的安装与配置 在这里我们设默认安装目录为c:\Tomcat安装完毕,更改环境变量(同上进入[环境变量]对话框),用同样的方法把c:\Tomcat添加到TOMCAT_HOME环境变量中。启动Tomcat,在浏览器的[地址]下拉列表框中输入“http://localhost:8080/”,如果看到的是在左上方有一只可爱的小猫,则表示Tomcat安装成功。 3.数据库的安装 本文件中附带每个系统所用的数据库的mdf文件和log文件,用户可以在SQLServer中进行附加数据库,便可成功,数据库的名字分别是项目申报系统I_d_system考试系统的名字是exam公司内部管理系统的名字是DSN。 4.数据源的配置 打开Windows Server 2000的控制面板,双击ODBC数据源(32位)打开数据源管理,在系统DSN中注册名称为JSP的MS SQL数据源。建立数据源后,JSP程序就可以通过JDBC-ODBC来调用MS SQL数据库。过程如下: 首先,从控制面板的管理工具中打开“ODBC数据源管理器”,单击“系统DSN”选项卡,单击“添加”按钮。 然后从“名称”列表栏中选择SQL Server,单击“完成”按钮,“建立新的数据源到SQL Server”对话框,在名称中键入所加数据源的名称,项目申报系统的数据原名称是firm,考试系统的名称是exam,公司内部管理系统的名称是wgl.dsn。在服务器栏中选择本地服务器(local)。在“建立新的数据源到SQL Server”对话框中单击“下一步”,出现选择SQL Server确认身份方法的对话框。选择“使用网络登录ID的Windows NT验证”,的方法 在选择身份确认方法对话框中单击“下一步”,选择数据库的对话框,在“改变默认的数据库为”前面加上标记,在下拉列表中选择自己建立数据库名称。 在选择数据库对话框中单击“下一步”,出现数据库设置对话框,不用改变默认的设置,单击“完成”按钮,完成数据源的建立。 5.数据的操作 将exam,firm,opendb三个文件夹拷贝到Tomcat/common/classes下。这样在地址栏中键入http:localhost:8080/system/index.htm便可进入项目申报系统的首页,同样键入http:localhost:8080/exam/index.htm便可进入考试系统的首页。键入http:localhost:8080/DSN/totallogin.jsp便进入公司管理系统首页。
lowen 基于monkeyrunner的android应用的自动化测试,并输出测试结果到html的框架 仿腾讯utest测试框架 代码有待完善,欢迎有兴趣的朋友一起讨论(目前报表里面使用echarts部分没有写数据处理逻辑,框架已搭好) 主框架代码1 bin\lowen_play.bat 循环执行N个py脚本 1.初始化路径,时间 2.开启线程记录cpu,内存等日志 3.开启线程记录adb log日志 4.执行py脚本 5.批量处理截图加上水印(通过bin\ImageMarkClickLogo.jar) 6.关闭记录日志的线程(关闭窗口) 7.读取adb log日志 判断是否crash 8.输出html报表 主框架代码2 bin\launch.py 遍历mr文件夹下面的所有文件夹,执行mr子文件夹里面的所有mr脚本 usage 例子1 修改mr子目录下面的config.txt配置文件 pkgkey 表示包名com.ebest.sfa.xxx apkPathkey apk安装包路径E:/apk/SFA-2.1.0.1-1230-03-beta.apk actkey apk启动activity 路径com.ebest.sfa.xxx/com.ebest.sfa.login.activity.LoginActivity moudlekey 暂时没用到,可以扩展到脚本里面 运行lowen -s 开始测试 例子2 mr目录下新建测试目录,同理例子1配置config.txt lowen -p 编辑mr脚本 运行lowen -s 开始测试 例子3 运行>启动Lowen测试.bat 直接启动测试或者命令行lowen -s(该命令会自动新建空的mr目录) 如果没有mr文件夹,先新建mr文件夹,然后按照mr_samples目录下面的脚本开始编写测试脚本 例子4 运行>录制脚本.bat 开启mr脚本录入(或者执行命令行lowen -p) 标签:Lowen  自动化测试

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值