Spring Boot 部署与服务配置

保姆级教程:在Ubuntu 22.04上从零安装SUMO并运行第一个交通仿真 本教程详细介绍了在Ubuntu 22.04系统上从零安装SUMO交通仿真软件并运行第一个仿真的完整流程。涵盖环境准备、PPA源安装、核心组件验证、首次仿真案例运行以及进阶配置技巧,特别针对netedit路网编辑器和地图格式转换等实用工具进行重点讲解,帮助用户快速掌握SUMO在交通仿真领域的应用。 阅读详情

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

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

一、内嵌 Server 配置

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

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

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

Tomcat 
Tomcat为Spring Boot的默认容器,下面是几个常用配置:
  1. # tomcat最大线程数,默认为200  
  2. server.tomcat.max-threads=800  
  3. # tomcat的URI编码  
  4. server.tomcat.uri-encoding=UTF-8  
  5. # 存放Tomcat的日志、Dump等文件的临时文件夹,默认为系统的tmp文件夹(如:C:\Users\Shanhy\AppData\Local\Temp)  
  6. server.tomcat.basedir=H:/springboot-tomcat-tmp  
  7. # 打开Tomcat的Access日志,并可以设置日志格式的方法:  
  8. #server.tomcat.access-log-enabled=true  
  9. #server.tomcat.access-log-pattern=  
  10. # accesslog目录,默认在basedir/logs  
  11. #server.tomcat.accesslog.directory=  
  12. # 日志文件目录  
  13. logging.path=H:/springboot-tomcat-tmp  
  14. # 日志文件名称,默认为spring.log  
  15. logging.file=myapp.log  
Jetty 
如果你要选择Jetty,也非常简单,就是把pom中的tomcat依赖排除,并加入Jetty容器的依赖,如下:
  1. <dependencies>  
  2.   <dependency>  
  3.     <groupId>org.springframework.boot</groupId>  
  4.     <artifactId>spring-boot-starter-web</artifactId>  
  5.     <exclusions>  
  6.       <exclusion>  
  7.         <groupId>org.springframework.boot</groupId>  
  8.         <artifactId>spring-boot-starter-tomcat</artifactId>  
  9.       </exclusion>  
  10.     </exclusions>  
  11.   </dependency>  
  12.   <dependency>  
  13.     <groupId>org.springframework.boot</groupId>  
  14.     <artifactId>spring-boot-starter-jetty</artifactId>  
  15.   </dependency>  
  16. <dependencies>   
打包 
打包方法: 
CMD进入项目目录,使用 mvn clean package 命令打包,以我的项目工程为例:
  1. 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 方法
  1. public class SpringBootSampleApplication extends SpringBootServletInitializer{  
  2.   
  3.     private static final Logger logger = LoggerFactory.getLogger(SpringBootSampleApplication.class);  
  4.   
  5.     @Override  
  6.     protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {  
  7.         return builder.sources(this.getClass());  
  8.     }  
  9.   
  10. }  
  1. 修改pom文件中jar 为 war
  1. <!-- <packaging>jar</packaging> -->  
  2. <packaging>war</packaging>  
  1. 修改pom,排除tomcat插件
  1. <dependency>  
  2.             <groupId>org.springframework.boot</groupId>  
  3.             <artifactId>spring-boot-starter-web</artifactId>  
  4.             <exclusions>  
  5.                 <exclusion>  
  6.                     <groupId>org.springframework.boot</groupId>  
  7.                     <artifactId>spring-boot-starter-tomcat</artifactId>  
  8.                 </exclusion>  
  9.             </exclusions>  
  10.         </dependency>  
  1. 打包部署到容器 
    使用命令 mvn clean package 打包后,同一般J2EE项目一样部署到web容器。

三、使用Profile区分环境

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

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

  1. app.name=MyApp  
  2. server.port=8080  
  3. spring.profiles.active=dev  
application-dev.properties
  1. server.port=8081  
application-stg.properties
  1. server.port=8082  

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

  1. app.name 只存在于默认配置文件 application.properties 中,因为指定环境中不存在同样的配置,所以该值不会被覆盖   
  2. server.port 默认为8080,但是我们指定了环境后,将会被覆盖。如果指定stg环境,server.port 则为 8082   
  3. spring.profiles.active 默认指定dev环境,如果我们在运行时指定 –spring.profiles.active=stg 那么将应用stg环境,最终 server.port 的值为8082  
2、Java类中@Profile注解 
下面2个不同的类实现了同一个接口,@Profile注解指定了具体环境
  1. // 接口定义  
  2. public interface SendMessage {  
  3.   
  4.     // 发送短信方法定义  
  5.     public void send();  
  6.   
  7. }  
  8.   
  9. // Dev 环境实现类  
  10. @Component  
  11. @Profile("dev")  
  12. public class DevSendMessage implements SendMessage {  
  13.   
  14.     @Override  
  15.     public void send() {  
  16.         System.out.println(">>>>>>>>Dev Send()<<<<<<<<");  
  17.     }  
  18.   
  19. }  
  20.   
  21. // Stg环境实现类  
  22. @Component  
  23. @Profile("stg")  
  24. public class StgSendMessage implements SendMessage {  
  25.   
  26.     @Override  
  27.     public void send() {  
  28.         System.out.println(">>>>>>>>Stg Send()<<<<<<<<");  
  29.     }  
  30.   
  31. }  
  32.   
  33. // 启动类  
  34. @SpringBootApplication  
  35. public class ProfiledemoApplication {  
  36.   
  37.     @Value("${app.name}")  
  38.     private String name;  
  39.   
  40.     @Autowired  
  41.     private SendMessage sendMessage;  
  42.   
  43.     @PostConstruct  
  44.     public void init(){  
  45.         sendMessage.send();// 会根据profile指定的环境实例化对应的类  
  46.     }  
  47.   
  48. }  
3、logback-spring.xml也支持有节点来支持区分
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <configuration>  
  3.     <include resource="org/springframework/boot/logging/logback/base.xml" />  
  4.     <logger name="org.springframework.web" level="INFO"/>  
  5.   
  6.     <springProfile name="default">  
  7.         <logger name="org.springboot.sample" level="TRACE" />  
  8.     </springProfile>  
  9.   
  10.     <springProfile name="dev">  
  11.         <logger name="org.springboot.sample" level="DEBUG" />  
  12.     </springProfile>  
  13.   
  14.     <springProfile name="staging">  
  15.         <logger name="org.springboot.sample" level="INFO" />  
  16.     </springProfile>  
  17.   
  18. </configuration>  

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

四、指定外部的配置文件

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

  1. java -jar demo.jar --spring.config.location=/opt/config/application.properties  

其中文件名随便定义,无固定要求。

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

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

  1. #!/bin/sh  
  2.   
  3. rm -f tpid  
  4.   
  5. nohup java -jar /data/app/myapp.jar --spring.profiles.active=stg > /dev/null 2>&1 &  
  6.   
  7. echo $! > tpid  
stop.sh
  1. tpid=`cat tpid | awk '{print $1}'`  
  2. tpid=`ps -aef | grep $tpid | awk '{print $2}' |grep $tpid`  
  3. if [ ${tpid} ]; then  
  4.         kill -9 $tpid  
  5. fi  
check.sh
  1. #!/bin/sh  
  2.   
  3. tpid=`cat tpid | awk '{print $1}'`  
  4. tpid=`ps -aef | grep $tpid | awk '{print $2}' |grep $tpid`  
  5. if [ ${tpid} ]; then  
  6.         echo App is running.  
  7. else  
  8.         echo App is NOT running.  
  9. fi  
kill.sh
  1. #!/bin/sh  
  2. # kill -9 `ps -ef|grep 项目名称|awk '{print $2}'`  
  3. kill -9 `ps -ef|grep demo|awk '{print $2}'`  


NX二次开发常用函数——从一个坐标系到另一个坐标系的转换(UF_MTX4_csys_to_csys )相同体坐标转化 本文介绍了在项目开发中实现坐标转换的方法,重点解析了两个关键函数UF_MTX4_csys_to_csys和UF_MTX4_vec3_multiply的使用。通过4个变换矩阵(transform1-4)实现工作坐标系与绝对坐标系之间的相互转换,并以圆柱体为例详细说明了坐标转换的具体实现过程,包括原点、X/Y轴方向的转换处理。相比之前采用的if-else判断方法,这种矩阵转换方式在代码复杂度和运行效率上都更具优势。 阅读详情

相关推荐

用SPSS做信效度分析

对问卷进行Cronbach’s Alpha信度检验。如果此值高于0.8,则说明信度高;如果此值介于0.7-0.8之间,则说明信度较好;如果此值介于0.6~0.7,则说明信度可接受;如果此值小于0.6,说明信度不佳。下面利用SPSS进行分析,点击分析–标度–可靠性分析选项,选中所要分析的问卷数据或题目。得到结果,我们要看这个有用的结果,当克隆巴赫Alpha系数(也可以看标准化后的)大于0.8时候,说明问卷信度较高。

小高~的博客 1万+

@PostConstruct和@PostDestroy注解无法在Java11中使用问题解决

项目从JDK8升级JDK11遇到问题。

。。。。 1362

Tiny windows 11 安装与部署

需要注意,安装完后键入 windows 键,输入 update 先更新系统。点击开始,等待完成即可,用户可自定义。

m0_73351035的博客 9049

SpringBoot热部署原理(二)

前言 前面对SpringBoot热部署的流程和使用方式做了一个简单的介绍,这里对SpringBoot热部署原理做一个分析 阿

Show Me The Code 563

有限时间 vs 固定时间 vs 预定时间滑模:稳定性分析与仿真验证方法对比(中)

有限时间滑模控制(FTSMC)和固定时间滑模控制(FixTSMC)是两种重要的控制策略,旨在实现系统状态的快速收敛。FTSMC通过设计滑模面和控制律,确保系统状态在有限时间内收敛到原点,但其收敛时间与初始状态相关。FixTSMC则进一步优化,使收敛时间与初始状态无关,适用于高动态环境,具有更强的鲁棒性和更平滑的控制信号。两种方法均通过李雅普诺夫函数证明其稳定性,并通过仿真验证其有效性。FixTSMC在工程应用中更为可靠,尤其适合安全关键系统。

Lyajpunov的博客 3225

PIVlab软件入门:从GUI操作到2D2C粒子测速实战

本文详细介绍了PIVlab软件在2D2C粒子测速中的入门与实战应用。从GUI操作到环境搭建,再到图像预处理和核心参数设置,帮助用户快速掌握这一基于MATLAB的开源工具。通过实际案例和技巧分享,展示了PIVlab在流体力学实验中的高效性和实用性。

weixin_42547431的博客 227

@PostConstruct虽好,请勿乱用

1.@PostConstruct 修饰的方法是在bean初始化的时候执行,并且相比其它初始化方法,它们的顺序是@PostConstruct> nitializingBean > init-method 2.不要在@PostConstruct 中执行耗时任务,它会影响程序的启动速度,如果实在有这样的需求可以考虑异步执行或者使用定时任务。 3.程序中如果有类似future.get获取线程执行结果的代码,尽量使用有超时时间的get方法。

m0_50275872的博客 2209

HTTPS接口测试翻车实录:为什么浏览器能访问而curl报证书错误?

本文深入分析了HTTPS接口测试中浏览器访问正常而curl报证书错误的典型问题。通过对比浏览器、Postman和curl的工具行为差异,结合Nginx日志与Wireshark抓包,揭示了问题根源在于网络架构中HTTPS请求被意外“降级”为HTTP传输,导致SSL握手失败。文章重点探讨了curl工具严格验证机制暴露的`Peer's Certificate issuer is not recognized`错误,并提供了网络配置修正方案与标准化测试流程。

u9v0w的博客 279

部署项目时项目启动两次及每次启动@PostConstruct执行两次问题

由于tomcat的server.xml中配置的该项目的path与项目名不一致导致的。

qq_27579471的博客 1604

物理小白也能懂的PINN指南:用Python给神经网络注入‘物理常识‘

本文为物理小白提供了一份通俗易懂的PINN入门指南。通过生活化类比和Python实战,详细讲解了如何将物理定律作为约束注入神经网络,使其具备“物理常识”,从而在数据稀缺时也能做出符合规律的预测。文章以热传导方程为例,手把手教你从零构建物理信息神经网络。

open4的博客 349

【全志V821_FoxPi】6-2 IMX219 MIPI摄像头适配

全志V821芯片适配IMX219 MIPI摄像头(2lane)教程,基于FoxPi开发板V1.2 SDK。文章详细介绍了IMX219的技术参数(800万像素、1/4英寸CMOS、支持1080P@30fps输出)及模组接口原理图。重点展示了设备树配置方法,包括PIO引脚定义(TWI0使用PA3/PA4,复位引脚PA2)、TWI0节点设置(100kHz时钟)以及VIND0节点中sensor0的完整配置(I2C地址0x20、MCLK0、RAW格式输出等)。配置过程强调需注意IMX219的器件地址转换(0x10→0

第四维度的博客 2255

项目部署spring

spring项目部署

weixin_45139640的博客 1435

Arduino ESP8266通过 RF433数据收发实验

Arduino ESP8266通过 RF433射频模块实现数据收发实验 写这篇文章,折腾了2天,在没有成功之前,一直在摸索和采坑当中,不要问我黑暗和黎明之间有多长。开发很多时候只问结果,不问过程的,在这里分享来之不易的结果,希望后面的人不要采坑,有成功的案例先河,后面与之相关的应用开发只需要套用模板修改即可实现。 实物搭建 RF433模块 我使用的是这个:nodemcu 本案例开发所使用到的库:RadioHead:http://www.airspayce.com/mikem/

perseverance51博客 3808

55. spring boot 服务配置和部署【从零开始学Spring Boot】

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

杜海的博客 445

VB摄像头监控

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

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Linux 命令大全:grub 多重引导程序命令行工具详解与系统应急修复实战

本篇技术指南聚焦于 Linux 命令大全项目 [command/grub.md](https://link.gitcode.com/i/75d1a613c2a43d8f8f8997aadb0b38b3) 中记录的 **grub 命令**——它是 GNU GRUB(Grand Unified Bootloader)多重引导程序提供的命令行 shell 交互工具。文章将完整讲解 grub 命令的语法与

gitblog_00639的博客 390

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

为什么选择 Spring Boot? 它是如何简化单个微服务的创建、配置和部署的?

它并不是要取代 Spring Framework,而是构建在其之上,通过一系列“约定优于配置”的原则和自动化手段,让开发者能够更快的创建出独立、生产级别的基于 Spring 的应用程序。它让开发者可以更专注于业务逻辑本身,而不是花费大量时间在繁琐的基础设施搭建和配置上,从而显著提高了开发效率和应用的交付速度,使其成为构建现代微服务应用的热门选择。等核心特性,极大的简化了基于 Spring 的 Java 应用(尤其是微服务)的。Spring Boot 的核心目标就是。Spring Boot 通过。

专注于技术分享 799

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

个人部署Spring Boot项目应选用哪种服务器配置?

个人部署 Spring Boot 项目时,服务器配置的选择需结合综合判断。

2403_89345764的博客 24

【SpringBoot】Spring Boot 部署与服务配置

Spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动。其内置Tomcat容器或Jetty容器,具体由配置来决定(默认Tomcat)。当然你也可以将项目打包成war包,放到独立的web容器中(Tomcat、weblogic等等),当然在此之前你要对程序入口做简单调整。 项目构建我们使用Maven或Gradle,这将使项目依赖、jar包管理、以及打包部署变的非常方便。 一、内嵌 Server 配置 Spring Boot将容器内置后,它通过配置文件的方式

天天新知 1036
上一篇: dubbo服务者配置说明
下一篇: spring与redis集成之aop整合方案
杜引强
博客等级 码龄13年 806粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值