热门标签 | 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


推荐阅读
  • Python如何调用类里面的方法
    本文介绍了在Python中调用同一个类中的方法需要加上self参数,并且规范写法要求每个函数的第一个参数都为self。同时还介绍了如何调用另一个类中的方法。详细内容请阅读剩余部分。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 标题: ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了如何在Mac上使用Pillow库加载不同于默认字体和大小的字体,并提供了一个简单的示例代码。通过该示例,读者可以了解如何在Python中使用Pillow库来写入不同字体的文本。同时,本文也解决了在Mac上使用Pillow库加载字体时可能遇到的问题。读者可以根据本文提供的示例代码,轻松实现在Mac上使用Pillow库加载不同字体的功能。 ... [详细]
  • C++语言入门:数组的基本知识和应用领域
    本文介绍了C++语言的基本知识和应用领域,包括C++语言与Python语言的区别、C++语言的结构化特点、关键字和控制语句的使用、运算符的种类和表达式的灵活性、各种数据类型的运算以及指针概念的引入。同时,还探讨了C++语言在代码效率方面的优势和与汇编语言的比较。对于想要学习C++语言的初学者来说,本文提供了一个简洁而全面的入门指南。 ... [详细]
  • 本文介绍了Python函数的定义与调用的方法,以及函数的作用,包括增强代码的可读性和重用性。文章详细解释了函数的定义与调用的语法和规则,以及函数的参数和返回值的用法。同时,还介绍了函数返回值的多种情况和多个值的返回方式。通过学习本文,读者可以更好地理解和使用Python函数,提高代码的可读性和重用性。 ... [详细]
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社区 版权所有