美文网首页
SpringBoot(Jar包)指定配置文件启动

SpringBoot(Jar包)指定配置文件启动

作者: 轻轻敲醒沉睡的心灵 | 来源:发表于2022-10-21 10:48 被阅读0次

    微服务时代,每个项目有多个微服务组成,每个微服务又会有多个配置环境,本地开发环境,测试环境,线上环境等等。每次启动要指定配置文件启动。
    这里说一下启动项目或Jar包时指定配置文件。

    1. 在ide中

    我习惯用的是Eclipse,多个环境配置文件是这样的


    多环境配置

    1.1 指定配置环境

    如果没有用到像nacos这样的配置中心,那我们直接指定配置环境就行(指定配置文件也可以),如下图

    指定配置环境1
    指定配置环境2
    注意:Profile那里只需要填环境名称,不是配置文件名称,如图就会去加载application-ali这个配置文件。
    同时注意:如果指定了配置环境,那配置文件中不能含有spring.profiles.activespring.profiles.include配置,否则报错。
    要想使用这个,可以使用下面的指定配置文件的方法,或者添加bootstrap.yml文件,在bootstrap.yml中配置nacos地址,使用spring.profiles.active

    1.2 指定配置文件

    如果用到了微服务的配置中心,这样配置很可能启动不起来的,需要在配置环境的Arguments标签页中配置,如图:

    指定配置文件
    配置内容:
    -Dfile.encoding=utf-8 
    -Dspring.config.location=classpath:/application-test.yml
    

    其中,第一条是配置编码为utf-8的,这样读取配置文件不会出错乱码;
    第二条是指定配置文件位置,classpath是指定在src/main/resource目录下的

    2. Jar包启动

    在服务器上,我通常用的,Jar包启动命令时这样的

    1. 指定配置环境

    nohup java -jar -Dfile.encoding=utf-8 -Dspring.profiles.active=dev test.jar >/tmp/null 2>&1 &
    

    这样启动时会去加载Jar包中Resource目录下application-dev.yml文件。需要注意的同在IDE中一样。

    2. 指定配置文件

    nohup java -jar -Dfile.encoding=utf-8 -Dspring.config.location=classpath:/application-dev.yml test.jar >/dev/null 2>&1 &
    

    若配置文件在Jar包外面,-Dspring.config.location=后面不用classpath,直接使用配置文件的相对或绝对路径就行:-Dspring.config.location=app-dev.yml

    3. 命令分析

    启动命令中,有几部分解释一下:

    • nohup
    • >/dev/null
    • 2>&1
    • &
    3.1 nohup&

    这2个都是要后台启动的命令,在xshell等ssh工具中,
    若命令中只有nohup这一个:

    1. 使用Ctrl + C快捷键,程序会关闭
    2. 关闭session即断开xshell连接,程序不会关闭

    若命令中只有&这一个:

    1. 使用Ctrl + C快捷键,程序不会关闭
    2. 关闭session即断开xshell连接,程序会关闭

    所以,经常nohup&配合使用来启动程序nohup ./test &

    3.2 >/dev/null

    这个是设置输出文件的。也可以是>>/dev/null

    • 其中>或者>>表示输出重定向的意思。>会覆盖目标的原有内容,当文件存在时,会先清空,然后把内容写入该文件,否则直接创建文件。>>是将输出内容追加到目标文件中。如果文件不存在,就创建文件,如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响。
    • 这里使用/dev/null是因为在项目xml文件中配置了日志,所以不想使用linux中输出的日志,就指向了null文件,这样就不会生成linux带的日志了,只用我们在配置中指定的那个。若想要这个日志,指定位置和文件名就行:>/logs/nohup-test.out
    • 需要注意,文件不存在时,使用>>>是一样的,会新建文件。
    3.3 2>&1

    首先要知道,bash中0,1,2三个数字分别代表STDIN_FILENOSTDOUT_FILENOSTDERR_FILENO,即标准输入(一般是键盘),标准输出(一般是显示屏,准确的说是用户终端控制台),标准错误(出错信息输出)。

    • 2>&1 也就表示将错误重定向到标准输出上,即在日志中能看到错误信息。&表示整个过程在后台进行。

    4. shell脚本停止命令

    这是从阿里的nacos停止脚本拷出来的,直接用

    #!/bin/bash
    
    pid=`ps ax | grep -i 'test-server.jar' | grep java | grep -v grep | awk '{print $1}'`
    if [ -z "$pid" ] ; then
            echo "No Test-Server running."
            exit -1;
    fi
    
    echo "The Test-Server(${pid}) is running..."
    
    kill ${pid}
    
    echo "Send shutdown request to Test-Server(${pid}) OK"
    

    总结

    1. 指定配置环境有各种限制和条件,所以建议直接使用指定配置文件的方式
    2. 弄明白shell脚本中各个命令的意思,可以灵活配置日志文件和后台启动以及指定配置文件

    相关文章

      网友评论

          本文标题:SpringBoot(Jar包)指定配置文件启动

          本文链接:https://www.haomeiwen.com/subject/dsfuzrtx.html