SpringBoot运维实用篇 SpringBoot程序的打包与运行

文章目录

  • SpringBoot程序的打包与运行
  • 临时属性设置
  • 属性加载优先级
  • 开发环境中使用临时属性
  • 配置文件分类
  • 自定义配置文件
  • 多环境开发
  • 多环境开发控制
  • 日志
    • 代码中使用日志工具记录日志
    • 日志输出格式控制
    • 日志文件

SpringBoot程序的打包与运行

SpringBoot运维实用篇 SpringBoot程序的打包与运行_第1张图片
SpringBoot运维实用篇 SpringBoot程序的打包与运行_第2张图片
SpringBoot程序是基于Maven创建的,在Maven中提供有打包的指令,叫做package。本操作可以在Idea环境下执行。
SpringBoot运维实用篇 SpringBoot程序的打包与运行_第3张图片
package按钮
打包之后就会在target包下生成一个jar文件
SpringBoot运维实用篇 SpringBoot程序的打包与运行_第4张图片
运行
程序包打好以后,就可以直接执行了。在程序包所在路径下,执行指令。
java -jar 工程包名.jar
在使用向导创建SpringBoot工程时,pom.xml文件中会有如下配置,这一段配置千万不能删除,否则打包后无法正常执行程序。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-maven-pluginartifactId>
        plugin>
    plugins>
build>

临时属性设置

目前我们的程序包打好了,可以发布了。但是程序包打好以后,里面的配置都已经是固定的了,比如配置了服务器的端口是8080。如果我要启动项目,发现当前我的服务器上已经有应用启动起来并且占用了8080端口,这个时候就尴尬了。难道要重新把打包好的程序修改一下吗?比如我要把打包好的程序启动端口改成80。
SpringBoot运维实用篇 SpringBoot程序的打包与运行_第5张图片
SpringBoot提供了灵活的配置方式,如果你发现你的项目中有个别属性需要重新配置,可以使用临时属性的方式快速修改某些配置。方法也特别简单,在启动的时候添加上对应参数就可以了。

java –jar springboot.jar –-server.port=80

上面的命令是启动SpringBoot程序包的命令,在命令输入完毕后,空一格,然后输入两个-号。下面按照属性名=属性值的形式添加对应参数就可以了。记得,这里的格式不是yaml中的书写格式,当属性存在多级名称时,中间使用点分隔,和properties文件中的属性格式完全相同。
如果你发现要修改的属性不止一个,可以按照上述格式继续写,属性与属性之间使用空格分隔。

java –jar springboot.jar –-server.port=80 --logging.level.root=debug

属性加载优先级

现在我们的程序配置受两个地方控制了,第一配置文件,第二临时属性。并且我们发现临时属性的加载优先级要高于配置文件的。那是否还有其他的配置方式呢?其实是有的,而且还不少,打开官方文档中对应的内容,就可以查看配置读取的优先顺序。地址奉上:

https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config

总结

  1. 使用jar命令启动SpringBoot工程时可以使用临时属性替换配置文件中的属性
  2. 临时属性添加方式:java –jar 工程名.jar –-属性名=值
  3. 多个临时属性之间使用空格分隔
  4. 临时属性必须是当前boot工程支持的属性,否则设置无效

开发环境中使用临时属性

临时使用目前是有了,但是上线的时候通过命令行输入的临时属性必须是正确的啊,那这些属性配置值我们必须在开发环境中测试好才行。下面说一下开发环境中如何使用临时属性,其实就是Idea界面下如何操作了。

SpringBoot运维实用篇 SpringBoot程序的打包与运行_第6张图片
本质上就是修改主方法中的一个参数。

public static void main(String[] args) {
}

配置文件分类

  • 类路径下配置文件(一直使用的是这个,也就是resources目录中的application.yml文件)
  • 类路径下config目录下配置文件
  • 程序包所在目录中配置文件
  • 程序包所在目录中config目录下配置文件
    SpringBoot运维实用篇 SpringBoot程序的打包与运行_第7张图片
    SpringBoot运维实用篇 SpringBoot程序的打包与运行_第8张图片

自定义配置文件

方式一:使用临时属性设置配置文件名,注意仅仅是名称,不要带扩展名
SpringBoot运维实用篇 SpringBoot程序的打包与运行_第9张图片
方式二:使用临时属性设置配置文件路径,这个是全路径名
SpringBoot运维实用篇 SpringBoot程序的打包与运行_第10张图片

多环境开发

什么是多环境?其实就是说你的电脑上写的程序最终要放到别人的服务器上去运行。每个计算机环境不一样,这就是多环境。常见的多环境开发主要兼顾3种环境设置,开发环境——自己用的,测试环境——自己公司用的,生产环境——甲方爸爸用的。因为这是绝对不同的三台电脑,所以环境肯定有所不同,比如连接的数据库不一样,设置的访问端口不一样等等。
SpringBoot运维实用篇 SpringBoot程序的打包与运行_第11张图片
单个配置文件
SpringBoot运维实用篇 SpringBoot程序的打包与运行_第12张图片
多个配置文件
SpringBoot运维实用篇 SpringBoot程序的打包与运行_第13张图片
将所有的配置根据功能对配置文件中的信息进行拆分,并制作成独立的配置文件,命名规则如下

  • application-devDB.yml
  • application-devRedis.yml
  • application-devMVC.yml

SpringBoot运维实用篇 SpringBoot程序的打包与运行_第14张图片
在激活指定环境的情况下,同时对多个环境进行加载使其生效。

多环境开发控制

SpringBoot听maven的。整个确认后下面就好做了。大体思想如下:

  • 先在maven环境中设置用什么具体的环境
  • 在SpringBoot中读取maven设置的环境即可
    SpringBoot运维实用篇 SpringBoot程序的打包与运行_第15张图片
    Maven中设置多环境属性
    SpringBoot运维实用篇 SpringBoot程序的打包与运行_第16张图片

SpringBoot中引用Maven属性
SpringBoot运维实用篇 SpringBoot程序的打包与运行_第17张图片

日志

代码中使用日志工具记录日志

DEBUG:程序员调试代码使用
INFO:记录运维过程数据
WARN:记录运维过程报警数据
ERROR:记录错误堆栈信息

设置日志级别,root表示根节点,即整体应用日志级别
logging:
	level:
    	root: debug
logging:
	# 设置日志组
    group:
    	# 自定义组名,设置当前组中所包含的包
        ebank: com.itheima.controller
    level:
    	root: warn  // 这个就是最低从warn开始,比warn低的日志是不显示的,只显示比warn高的日志信息
        # 为对应组设置日志级别
        ebank: debug
    	# 为对包设置日志级别
        com.itheima.controller: debug

导入lombok后使用注解搞定,日志对象名为log

@Slf4j		//这个注解替代了下面那一行
@RestController
@RequestMapping("/books")
public class BookController extends BaseClass{
    private static final Logger log = LoggerFactory.getLogger(BookController.class);	//这一句可以不写了
}

日志输出格式控制

SpringBoot运维实用篇 SpringBoot程序的打包与运行_第18张图片

logging:
	pattern:
    	console: "%d %clr(%p) --- [%16t] %clr(%-40.40c){cyan} : %m %n"

日志文件

logging:
	logback:
    	rollingpolicy:
        	max-file-size: 3KB
            file-name-pattern: server.%d{yyyy-MM-dd}.%i.log
	以上格式是基于logback日志技术设置每日日志文件的设置格式,要求容量到达3KB以后就转存信息到第二个文件中。文件命名规则中的%d标识日期,%i是一个递增变量,用于区分日志文件。

你可能感兴趣的:(后端(旧),spring,boot,运维,intellij-idea)