21spring-boot读取外部配置文件的启动脚本

springboot项目通常使用fastjar打包,打包成一个独立的jar包,如何需要修改jar中的application.properties配置项则必须重新打包,这样很麻烦
springboot支持在启动时通过--参数=值 的方式设置参数值,并且优先级高于jar内的application.properties,例如在启动是设置server.port

java -jar spring-booot.jar --server.port=8081


于是我编写个脚本,读取当前目录下的application.propreties,使用上面的方式传入到jar中,因为传参的方式优先于配置文件,所以在外部application.properties中没有配置的会使用内部application.properties配置的值
脚本内容如下

#!/bin/sh
# chkconfig: 345 99 01
# description:springmvc

##############################
PRG="$0"
while [ -h "$PRG" ] ; do
  ls=`ls -ld "$PRG"`
  link=`expr "$ls" : '.*-> \(.*\)$'`
  if expr "$link" : '/.*' > /dev/null; then
    PRG="$link"
  else
    PRG=`dirname "$PRG"`/"$link"
  fi
done
#############################
##########################
# custom variables start
###########################
JAVA_HOME=/usr/java/jdk1.8.0_211-amd64
#JAVA_OPTS="-Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n"
APP_NAME=`basename "$PRG"`
APP_HOME=`dirname "$PRG"`
CONF_FILE=$APP_HOME/application.properties
PID_FILE=$APP_HOME/$APP_NAME.pid
MAIN_JAR=$APP_HOME/plisp-service-risk.jar
###########################
# custom variables end
###########################
source /etc/init.d/functions
#########################
# define funcation start
##########################
lock_dir=/var/lock/subsys
lock_file=$lock_dir/$APP_NAME
createLockFile(){
  [ -w $lock_dir ] && touch $lock_file
}

#读取配置文件
read_application_properties(){
  retval=""
  while read line
  do
    contains=$(echo $line|grep "^#")
    if [[ "$contains" == "" ]];then 
      if [ ! -z $line ]; then 
        retval="$retval --$line"
      fi      
    fi
  done < $CONF_FILE
  echo "$retval"
}

start (){
  [ -e $APP_HOME/logs ] || mkdir $APP_HOME/logs -p

  if [ -f $PID_FILE ]
  then
    echo 'alread running...'
  else
    APP_ARGS=$(read_application_properties)
    CMD="$JAVA_HOME/bin/java $JAVA_OPTS -jar $MAIN_JAR $APP_ARGS"
    echo $CMD
    nohup $CMD >> $APP_HOME/logs/$APP_NAME.log 2>&1 &
    echo $! > $PID_FILE
    createLockFile
    echo_success
  fi
}

stop(){
  if [ -f $PID_FILE ]
  then
    killproc -p $PID_FILE
    rm -f $PID_FILE
    echo_success
  else
    echo 'not running...'
  fi
}

restart(){
  stop
  start
}

status(){
  if [ -f $PID_FILE ]
  then
    cat $PID_FILE
  else
    echo 'not running...'
  fi
}

##########################
# define function end
##########################
ACTION=$1
case $ACTION in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    restart
    ;;
  status)
    status
    ;;
  *)
    echo usage "{start|stop|restart|status}"
  ;;
esac

使用脚本

wget http://download.uairobot.com/java/springboot/fastjar.sh
mv fastjar.sh <项目名称.sh>
vi <项目名称.sh>
vi application.properties

使用该脚本前需要进行修改
1.脚本名称为jar名称.sh,例如plisp-service-risk.sh
2.修改JAVA_HOME
3.修改CONF_FILE
4.修改MAIN_JAR

使用脚本
./plisp-service-risk.sh {start|stop|restart}

你可能感兴趣的:(spring-boot)