首页 > 其他分享 >springboot(二)

springboot(二)

时间:2023-02-24 19:47:33浏览次数:20  
标签:springboot 配置文件 环境 server 日志 port 属性

运维篇

1.SpringBoot程序的打包与运行

1.1程序打包

  • SpringBoot程序是基于Maven创建的,在Maven中提供有打包的指令,叫做package。本操作可以在Idea环境下执行。

    mvn package
    
  • 打包后会产生一个与工程名类似的jar文件,其名称是由模块名+版本号+.jar组成的。

1.2程序运行

  • 程序包打好以后,就可以直接执行了。在程序包所在路径下,执行指令。

    java -jar 工程包名.jar
    
  • 执行程序打包指令后,程序正常运行,与在Idea下执行程序没有区别。

  • 注意事项

    1. 如果计算机中没有安装java的jdk环境,是无法正确执行上述操作的,因为程序执行使用的是java指令。

    2. 在使用向导创建SpringBoot工程时,pom.xml文件中会有如下配置,这一段配置千万不能删除,否则打包后无法正常执行程序。

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

1.3命令行启动常见问题

  • 常用DOS命令

    # 查询端口
    netstat -ano
    # 查询指定端口
    netstat -ano |findstr "端口号"
    # 根据进程PID查询进程名称
    tasklist |findstr "进程PID号"
    # 根据PID杀死任务
    taskkill /F /PID "进程PID号"
    # 根据进程名称杀死任务
    taskkill -f -t -im "进程名称"
    
  • 常见问题→遇到再说

2.高级配置

2.1临时属性设置

  • SpringBoot提供了灵活的配置方式,如果发现你的项目中有个别属性需要重新配置,可以使用临时属性的方式快速修改某些配置。

    java –jar springboot.jar –-server.port=80
    /**
    java –jar springboot.jar是启动springboot程序的命令
    输入完之后空一格,两个--号,下面按照属性名=属性值的形式添加对应参数就可以了
    这里的书写格式为properties的
    如果要修改多个属性,继续在后面加上空格和两个--号作为分隔即可
    java –jar springboot.jar –-server.port=80 --logging.level.root=debug
    **/
    

属性加载优先级

  • image-20230224174720911
  • 不管这个顺序是怎么个高低排序,开发时一定要配置成自己要的顺序为准。这个顺序只是在自己想不明白问题的时候帮助自己分析而已。
  • 比如你\现在加载了一个user.name属性。结果发现出来的结果和想的不一样,那肯定是别的优先级比现在高的属性覆盖你的配置属性了,那就可以看着这个顺序挨个排查。哪个位置有可能覆盖了属性。

②开发环境中使用临时属性

  • 打开SpringBoot引导类的运行界面,在里面找到配置项。其中Program arguments对应的位置就是添加临时属性的image-20230224190111766

2.2配置文件分类

  • 配置文件分为4种

    • 项目类路径配置文件:服务于开发人员本机开发与测试
    • 项目类路径config目录中配置文件:服务于项目经理整体调控
    • 工程路径配置文件:服务于运维人员配置涉密线上环境
    • 工程路径config目录中配置文件:服务于运维经理整体调控
  • 多层级配置文件间的属性采用叠加并覆盖的形式作用于程序

2.3自定义配置文件

  1. 方式1:使用临时属性设置配置文件名,注意仅仅是名称,不要带扩展名image-20211206105548238

  2. 方式2:使用临时属性设置配置文件路径,这个是全路径名image-20211206105716450

  3. 设置加载多个配置文件image-20211206105750285

    使用的属性一个是spring.config.name,另一个是spring.config.location,这个要区别清楚。

3.多环境开发

什么是多环境? 其实就是你的电脑上写的程序最终要放到别人的服务器上去运行。每个计算机环境不一样,这就是多环境。常见的多环境开发主要兼顾3种环境设置,开发环境——自己用的,测试环境——自己公司用的,生产环境——甲方爸爸用的。因为这是绝对不同的三台电脑,所以环境肯定有所不同,比如连接的数据库不一样,设置的访问端口不一样等等。

3.1多环境开发(yaml单一文件版)

  • 那什么是多环境开发?就是针对不同的环境设置不同的配置属性即可。比如你自己开发时,配置你的端口如下

    server:
      port: 80
    
  • 设计两组环境呢

    server:
      port: 80
    ---		#中间使用三个减号分隔开
    server:
      port: 81
    
  • 给环境起名字

    spring:
    	profiles: pro
    server:
    	port: 80
    ---
    spring:
    	profiles: dev
    server:
    	port: 81
    
  • 设置默认启动

    spring:
    	profiles:
    		active: pro		# 启动pro
    ---
    spring:
    	profiles: pro
    server:
    	port: 80
    ---
    spring:
    	profiles: dev
    server:
    	port: 81
    
  • 其中关于环境名称定义上述格式是过时格式,标准格式如下

    spring:
    	config:
        	activate:
            	on-profile: pro
    

3.2多环境开发(yaml多文件版)

将所有的配置都放在一个配置文件中,尤其是每一个配置应用场景都不一样,这显然不合理,于是就有了将一个配置文件拆分成多个配置文件的想法。拆分后,每个配置文件中写自己的配置,主配置文件中写清楚用哪一个配置文件就好了。

  1. 主配置文件

    spring:
    	profiles:
    		active: pro		# 启动pro
    
  2. 环境配置文件

    server:
    	port: 80
    
  3. 使用文件名区分环境配置文件

    1. application-pro.yaml

      server:
      	port: 80
      
    2. application-dev.yaml

      server:
      	port: 81
      
    3. 文件的命名规则为:application-环境名.yml

  4. 在配置文件中,如果某些配置项所有环境都一样,可以将这些项写入到主配置中,只有哪些有区别的项才写入到环境配置文件中。

    1. 主配置文件中设置公共配置(全局)
    2. 环境分类配置文件中常用于设置冲突属性(局部)

3.3多环境开发(properties多文件版)

SpringBoot最早期提供的配置文件格式是properties格式的,这种格式的多环境配置也了解一下吧。

  1. 主配置文件

    spring.profiles.active=pro
    
  2. 环境配置文件

    1. application-pro.properties

      server.port=80
      
    2. application-dev.properties

      server.port=81
      
    3. 文件的命名规则为:application-环境名.properties

3.4多环境开发独立配置文件书写技巧

  1. 准备工作

    • 将所有的配置根据功能对配置文件中的信息进行拆分,并制作成独立的配置文件,命名规则如下
      1. application-devDB.yml
      2. application-devRedis.yml
      3. application-devMVC.yml
  2. 使用

    • 使用include属性在激活指定环境的情况下,同时对多个环境进行加载使其生效,多个环境间使用逗号分隔

      spring:
      	profiles:
          	active: dev
              include: devDB,devRedis,devMVC
      
  3. 注意

    • 当主环境dev与其他环境有相同属性时,主环境属性生效;其他环境中有相同属性时,最后加载的环境属性生效
  4. 优化

    • 但是上面的设置也有一个问题,比如我要切换dev环境为pro时,include也要修改。

    • 因为include属性只能使用一次,这就比较麻烦了。SpringBoot从2.4版开始使用group属性替代include属性,降低了配置书写量。简单说就是我先写好,你爱用哪个用哪个

      spring:
      	profiles:
          	active: dev
              group:
              	"dev": devDB,devRedis,devMVC
            		"pro": proDB,proRedis,proMVC
            		"test": testDB,testRedis,testMVC
      

3.5多环境开发控制

  1. 当Maven与SpringBoot同时对多环境进行控制时,以Mavn为主,SpringBoot使用@..@占位符读取Maven对应的配置属性值

    • maven中设置多环境(使用属性方式区分环境)

      <profiles>
          <profile>
              <id>env_dev</id>
              <properties>
                  <profile.active>dev</profile.active>
              </properties>
              <activation>
                  <activeByDefault>true</activeByDefault>		<!--默认启动环境-->
              </activation>
          </profile>
          <profile>
              <id>env_pro</id>
              <properties>
                  <profile.active>pro</profile.active>
              </properties>
          </profile>
      </profiles>
      
    • SpringBoot中读取maven设置值

      spring:
      	profiles:
          	active: @profile.active@
      
    • 上面的@属性名@就是读取maven中配置的属性值的语法格式。

  2. 基于SpringBoot读取Maven配置属性的前提下,如果在Idea下测试工程时pom.xml每次更新需要手动compile方可生效

4.日志

  • 日志其实就是记录程序日常运行的信息,主要作用
    1. 编程期调试代码
    2. 运营期记录信息
    3. 记录日常运营重要信息(峰值流量、平均响应时长……)
    4. 记录应用报错信息(错误堆栈)
    5. 记录运维过程数据(扩容、宕机、报警……)

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

  1. 添加日志记录操作

    @RestController
    @RequestMapping("/books")
    public class BookController extends BaseClass{
        //log对象用来记录日志的对象
        private static final Logger log = LoggerFactory.getLogger(BookController.class);
        @GetMapping
        public String getById(){
            //log.debug等操作就是写日志的API
            log.debug("debug...");
            log.info("info...");
            log.warn("warn...");
            log.error("error...");
            return "springboot is running...2";
        }
    }
    
  2. 设置日志输出级别

    1. 日志设置好以后可以根据设置选择哪些参与记录。这里是根据日志的级别来设置的。日志的级别分为6种

      1. TRACE:运行堆栈信息,使用率低
      2. DEBUG:程序员调试代码使用
      3. INFO:记录运维过程数据
      4. WARN:记录运维过程报警数据
      5. ERROR:记录错误堆栈信息
      6. FATAL:灾难信息,合并计入ERROR
    2. 一般情况下,开发时候使用DEBUG,上线后使用INFO,运维信息记录使用WARN即可

      # 开启debug模式,输出调试信息,常用于检查系统运行状况
      debug: true
      # 设置日志级别,root表示根节点,即整体应用日志级别
      logging:
      	level:
          	root: debug
      
  3. 设置日志组,控制指定包对应的日志输出级别,也可以直接控制指定包对应的日志输出级别

    logging:
    	# 设置日志组
        group:
        	# 自定义组名,设置当前组中所包含的包
            ebank: com.itheima.controller
        level:
        	root: warn
            # 为对应组设置日志级别
            ebank: debug
        	# 为对包设置日志级别
            com.itheima.controller: debug
    

4.2优化日志对象创建代码

  • 写代码的时候每个类都要写创建日志记录对象,这个可以优化一下,使用前面用过的lombok技术给我们提供的工具类即可。

    @RestController
    @RequestMapping("/books")
    public class BookController extends BaseClass{
        private static final Logger log = LoggerFactory.getLogger(BookController.class);	//这一句可以不写了
    }
    
  • 导入lombok后使用注解搞定,日志对象名为log

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

4.3日志文件

  • 记录日志到文件中格式非常简单,设置日志文件名即可。

    logging:
    	file:
        	name: server.log
    
  • 面对线上的复杂情况,一个文件记录是不能够满足运维要求的,通常会每天记录日志文件,同时为了便于维护,还要限制每个日志文件的大小

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

标签:springboot,配置文件,环境,server,日志,port,属性
From: https://www.cnblogs.com/Myvlog/p/17152893.html

相关文章

  • SpringBoot——启动流程
    SpringBoot概述BuildAnythingwithSpringBoot:SpringBootisthestartingpointforbuildingallSpring-basedapplications.SpringBootisdesignedtogetyo......
  • 今日总结-springboot搭建
    SpringBoot环境搭建相信大家都对SpringBoot有了个基本的认识了,前面一直在说,SpringBoot多么多么优秀,但是你没有实际的搭建一个SpringBoot环境,你很难去体会SpringBoot......
  • 排除加载出错的类,并启动运行springboot
    方式1:自定义@ComponentScan假设:我在使用RuoYi的时候,想自己的实现ShiroConfig,而不用RuoYi自带的ShiroConfig,且,不删除RuoYi自带的ShiroConfig类。此种情况下,就......
  • springboot默认链接池Hikari
    参考:SpringBoot中使用Hikari,给我整不会了_被基金支配的打工人的博客-CSDN博客......
  • springboot+logback日志配置
    <?xmlversion="1.0"encoding="UTF-8"?><!--scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。scanPeriod:设置监测配置文件是否......
  • 【笔记】springboot使用Spring-data-jpa
    Spring-data-jpaSpring-data-jpa依赖于Hibernate。通过整合Hibernate之后,我们以操作Java实体的⽅式最终将数据改变映射到数据库表中。添加依赖:<dependency<groupId......
  • idea 中 springboot项目多实例运行(services窗口)
    1.调出services窗口2.选中要运行的项目,copyConfiguration..3.编辑弹出窗口edit configuration(指定端口的命令--server.port=6004,最前面是两个短横岗 3.运行......
  • SpringBoot大文件上传解决方案
    ​前言 文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个......
  • SpringBoot 集成多个rabbitmq
    1.pom.xml配置<!--RabbitMQ--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>......
  • SpringBoot 集成 MybatisPlus
    MybatisPlus是Mybatis的升级版本,是对Mybatis的简化,因为他们的口号就是“为简化开发而生”。1、创建数据表CREATETABLE​​User​​(​​id​​INTNOTNULL,​​us......