热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringBoot的配置项

2019独角兽企业重金招聘Python工程师标准springBoot其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动。其内置Tomcat容器或Jetty容器,具体由配置来决定(默认Tomcat)。当然你也可以将项目打包成war包,放到独立的web容器中(Tomcat、weblogic等等),当然在此之前你要对程序入口做简单调整。

项目构建我们使用Maven或Gradle,这将使项目依赖、jar包管理、以及打包部署变的非常方便。

一、内嵌 Server 配置

Spring Boot将容器内置后,它通过配置文件的方式类修改相关server配置。 
先看一下下面的图,为关于server的配置列项: 
配置 
配置

其中常用的配置只有少数几个,已经用紫色标记起来。红框圈起来的部分,看名称分类就可以明白其作用。 
对server的几个常用的配置做个简单说明:

# 项目contextPath,一般在正式发布版本中,我们不配置
server.context-path=/myspringboot
# 错误页,指定发生错误时,跳转的URL。请查看BasicErrorController源码便知
server.error.path=/error
# 服务端口
server.port=9090
# session最大超时时间(分钟),默认为30
server.session-timeout=60
# 该服务绑定IP地址,启动服务器时如本机不是该IP地址则抛出异常启动失败,只有特殊需求的情况下才配置
# server.address=192.168.16.11

Tomcat 
Tomcat为Spring Boot的默认容器,下面是几个常用配置:

# tomcat最大线程数,默认为200
server.tomcat.max-threads=800
# tomcat的URI编码
server.tomcat.uri-encoding=UTF-8
# 存放Tomcat的日志、Dump等文件的临时文件夹,默认为系统的tmp文件夹(如:C:\Users\Shanhy\AppData\Local\Temp)
server.tomcat.basedir=H:/springboot-tomcat-tmp
# 打开Tomcat的Access日志,并可以设置日志格式的方法:
#server.tomcat.access-log-enabled=true
#server.tomcat.access-log-pattern=
# accesslog目录,默认在basedir/logs
#server.tomcat.accesslog.directory=
# 日志文件目录
logging.path=H:/springboot-tomcat-tmp
# 日志文件名称,默认为spring.log
logging.file=myapp.log

  •  

Jetty 
如果你要选择Jetty,也非常简单,就是把pom中的tomcat依赖排除,并加入Jetty容器的依赖,如下:

org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-tomcatorg.springframework.bootspring-boot-starter-jetty

  •  

打包 
打包方法: 
CMD进入项目目录,使用 mvn clean package 命令打包,以我的项目工程为例:

E:\spring-boot-sample>mvn clean package

  •  

可以追加参数 -Dmaven.test.skip=true 跳过测试。 
打包后的文件存放于项目下的target目录中,如:spring-boot-sample-0.0.1-SNAPSHOT.jar 
如果pom配置的是war包,则为spring-boot-sample-0.0.1-SNAPSHOT.war

二、部署到JavaEE容器

  1. 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法

public class SpringBootSampleApplication extends SpringBootServletInitializer{private static final Logger logger = LoggerFactory.getLogger(SpringBootSampleApplication.class);@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {return builder.sources(this.getClass());}}

  •  
  1. 修改pom文件中jar 为 war


war

  •  
  1. 修改pom,排除tomcat插件

org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-tomcat

  1. 打包部署到容器 
    使用命令 mvn clean package 打包后,同一般J2EE项目一样部署到web容器。

三、使用Profile区分环境

spring boot 可以在 “配置文件”、“Java代码类”、“日志配置” 中来配置profile区分不同环境执行不同的结果

1、配置文件 
使用配置文件application.yml 和 application.properties 有所区别 
以application.properties 为例,通过文件名来区分环境 application-{profile}.properties 
application.properties

app.name=MyApp
server.port=8080
spring.profiles.active=dev

  •  

application-dev.properties

server.port=8081

  •  

application-stg.properties

server.port=8082

  •  

在启动程序的时候通过添加 –spring.profiles.active={profile} 来指定具体使用的配置 
例如我们执行 java -jar demo.jar –spring.profiles.active=dev 那么上面3个文件中的内容将被如何应用? 
Spring Boot 会先加载默认的配置文件,然后使用具体指定的profile中的配置去覆盖默认配置。

app.name 只存在于默认配置文件 application.properties 中,因为指定环境中不存在同样的配置,所以该值不会被覆盖 
server.port 默认为8080,但是我们指定了环境后,将会被覆盖。如果指定stg环境,server.port 则为 8082 
spring.profiles.active 默认指定dev环境,如果我们在运行时指定 –spring.profiles.active=stg 那么将应用stg环境,最终 server.port 的值为8082

2、Java类中@Profile注解 
下面2个不同的类实现了同一个接口,@Profile注解指定了具体环境

// 接口定义
public interface SendMessage {// 发送短信方法定义public void send();}// Dev 环境实现类
@Component
@Profile("dev")
public class DevSendMessage implements SendMessage {&#64;Overridepublic void send() {System.out.println(">>>>>>>>Dev Send()<<<<<<<<");}}// Stg环境实现类
&#64;Component
&#64;Profile("stg")
public class StgSendMessage implements SendMessage {&#64;Overridepublic void send() {System.out.println(">>>>>>>>Stg Send()<<<<<<<<");}}// 启动类
&#64;SpringBootApplication
public class ProfiledemoApplication {&#64;Value("${app.name}")private String name;&#64;Autowiredprivate SendMessage sendMessage;&#64;PostConstructpublic void init(){sendMessage.send();// 会根据profile指定的环境实例化对应的类}}

  •  

3、logback-spring.xml也支持有节点来支持区分


  •  

再说一遍文件名不要用logback.xml 请使用logback-spring.xml

四、指定外部的配置文件

有些系统&#xff0c;关于一些数据库或其他第三方账户等信息&#xff0c;由于安全问题&#xff0c;其配置并不会提前配置在项目中暴露给开发人员。 
对于这种情况&#xff0c;我们在运行程序的时候&#xff0c;可以通过参数指定一个外部配置文件。 
以 demo.jar 为例&#xff0c;方法如下&#xff1a;

java -jar demo.jar --spring.config.location&#61;/opt/config/application.properties

  •  

其中文件名随便定义&#xff0c;无固定要求。

五、创建一个Linux 应用的sh脚本

下面几个脚本仅供参考&#xff0c;请根据自己需要做调整 
start.sh

#!/bin/shrm -f tpidnohup java -jar myapp.jar --spring.config.location&#61;application.yml > /dev/null 2>&1 &echo $! > tpidecho Start Success!

  •  

stop.sh

#!/bin/sh
APP_NAME&#61;myapptpid&#61;&#96;ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk &#39;{print $2}&#39;&#96;
if [ ${tpid} ]; thenecho &#39;Stop Process...&#39;kill -15 $tpid
fi
sleep 5
tpid&#61;&#96;ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk &#39;{print $2}&#39;&#96;
if [ ${tpid} ]; thenecho &#39;Kill Process!&#39;kill -9 $tpid
elseecho &#39;Stop Success!&#39;
fi

  •  

check.sh

#!/bin/sh
APP_NAME&#61;myapptpid&#61;&#96;ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk &#39;{print $2}&#39;&#96;
if [ ${tpid} ]; thenecho &#39;App is running.&#39;
elseecho &#39;App is NOT running.&#39;
fi

  •  

kill.sh

#!/bin/sh
APP_NAME&#61;myapptpid&#61;&#96;ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk &#39;{print $2}&#39;&#96;
if [ ${tpid} ]; thenecho &#39;Kill Process!&#39;kill -9 $tpid
fi

  •  

六、使用Linux服务的方式启动、停止、重启

1、首先在 pom.xml 中配置插件

org.springframework.bootspring-boot-maven-plugintrue

  •  

特别注意一下 true

2、然后正常使用 mvn clean package -Dmaven.test.skip&#61;true 将工程打成jar包

3、上传jar包到服务器&#xff0c;假设部署路径为 /var/apps/myapp.jar &#xff0c;使用命令做一个软连接到 /etc/init.d 目录&#xff0c;命令&#xff1a;

ln -s /var/apps/myapp.jar /etc/init.d/myapp

  • 1
  • 1

其中 /etc/init.d/myapp 最后的 myapp 可以是别的名字&#xff0c;这个就是服务名&#xff0c;我们后面使用 service [服务名] start 来启动&#xff08;下面有说明&#xff09;。

4、给jar文件授予可执行权限&#xff0c;命令&#xff1a;

chmod &#43;x myapp.jar

  •  

5、接下来&#xff0c;就可以使用我们熟悉的 service myapp start|stop|restart|status 来对应用进行启停了。 
执行命令后将得到形如 Started|Stopped [PID] 的结果反馈。 
默认PID文件路径&#xff1a;/var/run/appname/appname.pid 
默认服务日志文件路径&#xff1a;/var/log/appname.log&#xff08;可以通过下面.conf 的方式修改LOG_FOLDER&#xff09;

6、使用自定义的.conf文件来变更默认配置&#xff0c;方法如下&#xff1a; 
在jar包相同路径下创建一个.conf文件&#xff0c;名称应该与.jar的名称相同&#xff0c;如myapp.conf&#xff08;如果我们打包的文jar文件为 myapp-1.0.0.jar 那么这里的conf文件也应该是 myapp-1.0.0.conf&#xff09;&#xff0c;其内容配置可以如下&#xff1a;

JAVA_HOME&#61;/usr/local/jdk
JAVA_OPTS&#61;-Xmx1024M
LOG_FOLDER&#61;/data/logs/myapp

  •  

注&#xff1a;LOG_FOLDER 对应的文件夹目录要必须存在&#xff0c;如果目录不存在&#xff0c;服务并不会自从创建目录。

&#xff08;结束&#xff09;


转载于:https://my.oschina.net/qiangzigege/blog/904253


推荐阅读
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
  • 本文探讨了Web应用(Web App)与原生应用(Native App)之间的主要差异,包括它们在开发、功能实现及版本管理等方面的不同特点,并分析了各自的优势与适用场景。 ... [详细]
  • Fiddler 安装与配置指南
    本文详细介绍了Fiddler的安装步骤及配置方法,旨在帮助用户顺利抓取用户Token。文章还涵盖了一些常见问题的解决方案,以确保安装过程顺利。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 2023年,Android开发前景如何?25岁还能转行吗?
    近期,关于Android开发行业的讨论在多个平台上热度不减,许多人担忧其未来发展。本文将探讨当前Android开发市场的现状、薪资水平及职业选择建议。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • Beetl是一款先进的Java模板引擎,以其丰富的功能、直观的语法、卓越的性能和易于维护的特点著称。它不仅适用于高响应需求的大型网站,也适合功能复杂的CMS管理系统,提供了一种全新的模板开发体验。 ... [详细]
author-avatar
隔岸观火2502884207
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有