springboot项目启动指定项目外部yml配置文件

Git - submodule 小记 一些对 submodule 疑惑的整理 阅读详情

spring boot的经典项目配置是application,yml,在项目打包部署运行的时候,这个文件也会一同打进包里,随之启动。

这就带来了一个问题:

如果部署的服务器发生了变动,那么项目中配置的IP地址等信息也要变动,然后再重新打包部署,步骤略微繁琐。

所以在项目中,应避免类似于这种配置像代码一样写死到项目中的操作。

我们对于项目的配置,应该是可以随时可以更改的,不需要将项目全盘重新打包部署。

那么应该如何避免这种需要多次打包部署的情况呢?

解决办法:把项目的配置文件放在src目录以外,在服务启动脚本中指定外部配置文件的位置

以我为例:我的项目部署在Linux系统,使用脚本启动,项目是个spring boot项目。

  1. 把项目的applicatiom.yml文件拿出来,避免项目再次将它识别为配置文件并读取。
  2. 打包,并放到服务器上(此时打出的jar包里没有application.yml配置文件)。
  3. 改脚本:脚本其实就是用命令启动,只不过一个脚本里可以有很多命令,用脚本执行就没那么麻烦,不用一个一个敲命令。所以看个人情况,没多少命令的话直接用命令也行,我这只放我的脚本:
#!/bin/sh
kill -9 `ps -ef|grep java | grep gat-0.0.1.jar | awk '{print $2}'` > /dev/null 2>&1
java -jar /sitracs/gat1049/gat-0.0.1.jar --spring.config.location=conf/application.yml --server.port=8081 > /dev/null 2>&1 &

最后一行的java -jar xxx.jar是运行jar包的命令,--server.port=8081是指定端口的参数,spring.config.location=conf/application.yml这个参数就是指定外部application.yml配置文件位置的参数,在运行jar包的命令中加入这个参数就可以指定jar包以外的配置文件的位置了。

PS:因为java -jar xxx.jar这个运行jar包的命令在Windows和Linux系统都可以用,所以后面的参数也是一样的,两个系统都可以用。

基于拟蒙特卡洛模拟法的随机潮流计算matlab程序 由式(4-11)可知,蒙特卡洛模拟法的计算量不受电力系统规模大小影响,因此该方法在一些复杂的电力系统中可以得到应用,包括处理电力系统中有多个间歇性新能源接入的问题,解决系统中多个节点之间相关性问题等等。本章在此基础上提出了基于拟蒙特卡洛模拟的随机潮流计算方法,并且对拟蒙特卡洛法中的拟随机数序列进行了改进,大大提高了随机潮流的计算效率。模拟法的具体思路如下:基于实际工程问题的求解需要,建立与之相对应的随机模拟过程和随机概率模型,使得它们的参数,包括概率分布或者数学期望,能够等于问题的实际解; 阅读详情

相关推荐

从实验室到生活:构建一份全面的手机相机主观画质评测指南

本文详细介绍了如何从实验室数据转向实际体验,构建全面的手机相机主观画质评测指南。通过基础装备清单、室内外场景实战评测及数据之外的感知艺术,帮助用户发现手机相机在色彩还原、动态范围和夜景模式等方面的真实表现。特别关注主观体验与客观参数的差异,提供实用的评测技巧和报告撰写心法。

weixin_30940783的博客 308

git submodule 使用

文章转自:https://segmentfault.com/a/1190000020297996?utm_source=tag-newest 背景 在做不同的项目,但是又都会使用到一些常用的方法组件代码块等等。 作为一个追求优雅的开发人员,肯定不能接受一段代码到处复制粘贴的操作。而且一旦这段代码日后需要更新,到处粘贴的话就需要全局搜索然后含泪修改了。 那么有没有一种办法,能够作为一些公共代码的“栖息地”,可以做到一处编写,到处使用呢? 答案是有的,使用git内置功能submodule即可。 什么是Su

liubangbo的专栏 2009

CXL协议-第三章 CXL事务层

CXL.io为I/O设备提供了一个非一致的负载/存储接口。图3-1显示了Flex总线分层层次结构中的位置。事务类型、事务分组格式、基于信用的流量控制、虚拟通道管理和事务排序规则遵循PCIe*定义,详情请参考PCIe基础规范的“事务层规范”章节。本章重点介绍了用于CXL.io的著名的PCIe操作模式或特性。

qq_41305217的博客 2769

Git Submodule 使用

himg git 的 submodule 作为一个独立的 repo, 其拥有普通 repo 全部的功能, 我们可以完全按照普通的 repo 管理命令来进入 submodule 中进行手动管理. 不过如果存在多个 submodule 位于同一 superproject 下时, 掌握一些 git submodule ... 命令就变得尤为重要了. 本文列出了常用的一些 git submodule 管理命令, 并举出实际应用中遇到的问题及解决方案. submodule 介绍 在 git 仓库 superproj

q752933833的博客 4990

【Web攻防】SQLMap实战进阶:从数据猜解到高权限渗透的全流程指南

本文介绍了SQLMap工具在Web安全渗透测试中的实战应用,重点讲解了数据猜解、高权限操作、复杂请求提交、Tamper脚本开发和指纹绕过等核心场景。文章提供了可直接复用的命令示例,包括数据库信息获取、文件读写、命令执行等操作,并详细说明了POST/JSON/Cookie注入的实现方法。同时,介绍了Tamper脚本的开发模板和指纹伪装技巧,帮助降低检测风险。最后强调SQLMap在自动化渗透全链路中的价值,从漏洞发现到权限提升的完整流程,并提供了优化测试效率的实用建议。所有技术内容仅限合法授权场景使用。

YsChunQiu777的博客 441

从零到一:手把手教你构建自定义ReaxFF力场参数

本文手把手教你从零构建自定义ReaxFF力场参数,详解反应力场的动态键序机制与参数化逻辑。通过LAMMPS实战演示,涵盖训练数据准备、参数优化算法选择及性能优化技巧,助力研究人员精准模拟化学反应过程。适用于材料科学、催化研究等领域,特别适合已掌握分子动力学基础的进阶用户提升力场开发能力。

weixin_28365523的博客 1057

git submodule

在管理多个项目同用代码的时候,submodule比较有用 假设有三个项目仓库,MyProjectA,MyProjectB,MyPlugin MyPlugin由MyProjectA和MyProjectB共用,当然也可以把MyPlugin项目在两个项目中都放一遍,但这样修改MyPlugin后两边就得都改一遍,比较好的做法是使用submodule,用法也很简单,如下: 比如在MyProjectA中...

XIAOZHI0999的专栏 1528

私彩视频开奖动画直播源码内部核心技术解析及修改可增加后台操控-持续更新文章!

其实在此很感谢能做出H5开奖系统的码农们,而我本人也喜欢分解此类的东西。 因为特殊原因,该东西本人就不做图片展示,以防他人商业化。 借用开奖摇奖代码首先分解首页index文件。代码如下:(后面持续在原有的作品上添加后台操作) 代码里写的//.....是我的注明代码的所需。 ​ <!DOCTYPE html> <html> <head> <...

yugua3837的博客 5995

带submodule的git仓库自动化一键git push、git pull脚本

不知道大家在使用git的时候有没有遇到过这样的问题:发现git submodule特别好用,适合用于满足同时开发和部署的需求,并且结构清晰,方便我们对整个代码层次有一个大概的了解。但是很烦人的一点就是每次做完开发都要一个一个进入仓库提交更改,很浪费时间,也浪费力气。于是哥们奋发图强,为了一劳永逸,终于是憋了两坨大的出来,大家只要把下面的两个脚本放在顶层的仓库目录下就可以开开心心地使用了。然后是自动push脚本:(这个没问题,只要你submodule配置好了随便用)欢迎大佬提出指正意见!

JellyfishKnight的博客 1461

【瑞芯微px30】【RTL8363】【一】驱动移植-网卡驱动概述

linux rtl8363驱动移植

weixin_34799243的博客 1180

Cesium 实战 19 - 使用 gltf-vscode 查看、预览以及编辑 glTF 和 GLB 模型

Cesium 实战 - 使用 gltf-vscode 查看、预览以及编辑 glTF 和 GLB 模型。

非科班Java出身GISer的博客 6435

运行jar包时如何指定使用外部yml配置文件

如果使用项目里的配置文件,当我们修改了配置文件中的内容之后,是需要重新打包并且上传服务器等等,很麻烦,所以要使用外部的配置文件,修改配置文件之后只需要重启项目即可

crw_ndsc的博客 3669

Python爬虫实战:全网政府招标信息采集与整合

本文详细介绍了如何使用Python构建一个完整的政府招标信息爬虫系统,涵盖了从数据采集、解析、存储到质量监控的全流程。多源采集:支持多个地方政府网站的同时采集智能解析:自动适应不同网站结构,智能提取关键信息异步高效:使用异步编程提高采集效率反爬应对:内置多种反爬虫应对策略数据质量:完善的数据清洗和质量监控机制易于扩展:模块化设计,便于添加新的数据源。

2201_76125261的博客 1380

Spring Boot项目中使用外部application.yml配置文件启动JAR包

启动后,可以通过日志或应用程序中的配置项检查外部配置文件是否被正确加载。例如,检查数据库连接是否使用了外部配置文件中的URL和用户名。属性来指定外部配置文件的路径。这种方式允许配置文件独立于JAR包存在,便于修改和部署。在项目根目录下,使用Maven或Gradle打包项目,确保JAR包内不包含。假设你有一个Spring Boot项目,打包后生成的JAR文件名为。但如果我们希望使用外部配置文件,可以通过设置。如果外部配置文件位于Windows系统的。,并希望使用外部配置文件。

qq_45950454的博客 2502

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SpringBoot 项目启动时指定外部配置文件

配置文件放在外部,注册中心和配置中心写在bootstrap.yml中。切换环境时可以随时编辑配置文件。

20000_ZuuuuYao的博客 1748

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

如何设置java包 选择指定文件夹下的配置文件 执行spring项目

摘要:在Java项目中,可通过SpringBoot启动参数指定外部配置文件路径。使用--spring.config.location参数设置目录位置,如file:/path/to/your/config/,或配合--spring.config.name指定配置文件名。SpringBoot会自动加载该目录下的application.properties或指定配置文件,实现外部配置管理。

her_store的博客 197

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Dockerfile springboot项目拿走即用,将yml配置文件从外部挂入容器

Dockerfile 将springboot项目jar包打成镜像,并将yml配置文件外挂。 # 以一个镜像为基础,在其上进行定制。就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜像是必须指定的。而 FROM 就是指定 基础镜像,因此一个 Dockerfile 中 FROM 是必备的指令,并且必须是第一条指令。 FROM centos:7 # 声明作者 MAINTAINER developer # 在构建镜像时执行脚本 RUN yum -y install java # 指定工作目录。用

了迹奇有没 3966

Springboot JAR包获取外置配置文件(打包分离出配置文件)

之前项目是直接打成JAR包,服务器运行JAR包即可,为了安全起见,数据库会定时修改密码,这就导致每次修改完密码都要重新打包,于是改为配置文件由JAR包以外配置实现,步骤如下: 1、首先修改打包方式,打包时去掉配置文件(如application.yml) 打包配置如下设置 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> &.

心寒的博客 2359

一个很多人不知道的SpringBoot小技能!!

你确定你知道?

冰河的专栏 2177

Springboot中配置文件的加载顺序及多环境配置方式

Springboot中配置文件的加载顺序及多环境配置方式

鸢尾_的博客 4441

springboot启动时是如何加载配置文件application.yml文件

今天启动springboot时,明明在resources目录下面配置了application.yml的文件,但是却读不出来,无奈看了下源码,总结一下springboot查找配置文件路径的过程,能力有限,欢迎各位大牛指导!!!spring加载配置文件是通过listener监视器实现的,在springboot启动时:在容器启动完成后会广播一个SpringApplicationEvent事件,而Spri...

一只小菜鸡 18万+

IDEA下SpringBoot指定配置文件启动项目

选择 Configuration —》Environment —》Program arguments(main方法启动方式:优先级高于在配置文件里面的激活的)除了在配置文件和命令行中指定Profile,还可以在启动类中写死指定,通过SpringApplication.setAdditionalProfiles方法。多个配置文件,启动项目的时候,需要修改右上角的配置信息,按下图操作。在启动日志里看到下图所示的日志,便代表指定配置文件启动成功。在开发过程中,通常在主配置文件里指定实际使用的配置文件。

拾一二的博客 1万+

Spring Boot 指定外部启动配置文件

默认的打包spring boot项目会把配置文件打到jar包中,有时候在测试时需要想修改某些配置项。这时除了可以用启动参数覆盖配置项以外,还可以指定外部的配置文件覆盖已有配置文件。在需要修改较多配置参数的时候会很方便。 使用spring boot默认的配置文件路径 默认的查找路径如下: file:./config/ file:./ classpath:/config/ classpath:/ ...

凌晨港口 2万+

SpringBoot多环境配置yml文件以及引用外部配置文件的两种方式,以及读取yml配置内容

作者环境:SpringBoot 2.1.4.RELEASE 多环境配置 不同环境的配置yml文件名不一样: appointment.yml appointment-dev.yml(开发环境) appointment-test.yml(测试环境) appointment-prod.yml(正式环境) yml示例 application.yml 示例: 注意:配置多环境yml 文件必须是a...

qq_36174487的博客 2万+
上一篇: vmware安装虚拟机提示此主机不支持64位系统,此系统无法运行
下一篇: MyEclipse安装SVN插件及插件下载地址
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值