springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功

简介: 这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。

一、快速创建 SpringBoot 项目

通过 springboot学习二 的学习,知道了创建springboot项目的几种方式,以后都会采用idea社区版本Spring插件的方式来创建springboot项目。

1、新建项目

  1. spring Initializr:就是idea 提供的Spring 插件
  2. Project SDK:Java 的jdk

在这里插入图片描述

2、填写项目信息

根据自己需求填写

  1. Group Id:项目分组
  2. Artifact Id:分组的项目名,与下面的项目名相同即可
  3. Version:项目版本号
  4. Project Type:项目类型,默认maven
  5. Langage:语言,默认java
  6. Java version:Java版本号
  7. Project name:项目名
  8. Project description:项目描述
  9. Package name:项目包结构

在这里插入图片描述

3、勾选springboot整合依赖包

我这里只选择了一个web包
在这里插入图片描述

4、构建完成

在这里插入图片描述

5、maven 环境配置

settings->Preferences。 配置页面如下

  1. Maven home path:maven 解压路径
  2. User setting file:maven 中 setting的路径
  3. Local repository:maven 仓库地址
    在这里插入图片描述

二、springBoot标准项目结构

1. 标准项目结构

  1. resources:资源文件,存放静态文件,模板文件,配置文件
  2. static:存放静态文件
  3. templates:存放模板文件
  4. application.properties:springboot配置文件
    在这里插入图片描述

2. 编写一个测试类

在这里插入图片描述

三、springboot项目打包部署

springboot默认将项目打包成jar,然后独立运行

1. pom.xml 文件中的maven 插件

<!-- pom.xml中添加插件 -->
<build>
    <plugins>
        <!-- SpringBoot打包插件 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

2、maven命令打包

  1. 通过 maven 运行打包工具
    在这里插入图片描述
    在这里插入图片描述
  2. 打包成功之后,在项目的target包可以找到 jar 包
    在这里插入图片描述
  3. 进入target源目录,通过命令行的方式运行 jar(开发过程中我们直接运行启动类就可以了)
    在这里插入图片描述
  4. 我这里时Mac电脑,所以可以直接打开jar包所在终端。运行: java -jar xxx.jar
    在这里插入图片描述
  5. 测试一下接口,完美打开hello world。
    在这里插入图片描述
  6. 注意:如果想修改项目端口, 可以: java -jar xxx.jar --server.port=8888这里的优先级比在配置文件中的配置的端口号要高

四、修改banner(了解)

1. 修改 banner

SpringBoot提供了一些扩展点,比如修改banner,
例如:在resources根目录中新建一个 banner.txt 文件,替换默认的banner,txt 内容如下:

                   _ooOoo_
                  o8888888o
                  88" . "88
                  (| -_- |)
                  O\  =  /O
               ____/`---'\____
             .'  \\|     |//  `.
            /  \\|||  :  |||//  \
           /  _||||| -:- |||||_  \
           |   | \\\  -  /// |   |
           | \_|  ''\---/''  |   |
           \  .-\__  `-`  ___/-. /
         ___`. .'  /--.--\  `. . __
      ."" '<  `.___\_<|>_/___.'  >'"".
     | | :  `- \`.;`\ _ /`;.`/ - ` : | |
     \  \ `-.   \_ __\ /__ _/   .-` /  /
======`-.____`-.___\_____/___.-`____.-'======
                   `=---='
           佛祖保佑        永无BUG
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

2. 关闭 banner

#application.properties
#关闭banner
spring.main.banner-mode=off

3. 运行成功

在这里插入图片描述

五、热部署插件(了解)

除了使用JRebel来实现热部署,还可以使用Springboot提供的spring-boot-devtools包来完成Springboot应用热部署

<!-- SpringBoot热部署插件 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

也可以在创建项目时,勾选住热部署的依赖。
SpringBoot重启是reload重启,通过监控classpath的变化,如果classpath中的文件发生变化,即触发重启.springboot通过两个classpath来完成reload,一个basic classloader中加载不变的类(jar包中的类),一个restart classloader中加载classpath中的类(自己写的类),重启的时候,restart classloader中的类丢弃并重新加载

#默认排除的资源
spring.devtools.restart.exclude=static/**,templates/**,public/**       
#增加额外的排除资源
spring.devtools.restart.additional-exclude=public/** #处理默认配置排除之外的
spring.devtools.restart.enabled=false #禁用自动重启

六、切换运行环境(了解)

在实际开发中,一个系统是有多套运行环境的,如开发时有开发的环境,测试时有测试的环境,不同的环境中,系统的参数设置是不同的,如:连接开发数据和测试数据库的URL绝对是不同的,那么怎么快速的切换系统运行的环境,我们需要为不同的环境创建不同的配置文件。

  • application-dev.properties

    server.port=8081
    
  • application-test.properties

    server.port=8082
    
  • 在application.properties中指定需要使用的环境即可

    #指定使用的环境是dev
    spring.profiles.active=dev
    

七、SpringBoot参数配置

1. 参数来源

主要流程摘要:

  1. 命令行参数; 如: java -jar xxx.jar --server.port=80
  2. ServletConfig和ServletContext;
  3. 操作系统环境变量;
  4. application-{profile}.properties或者YAML文件;
  5. application.properties或者YAML文件;

一般用的比较多的就是直接在application.properties或者YAML配置 , 其次是命令行启动方式

application.properties语法

server.port=80  
server.session-timeout=30  
server.tomcat.uri-encoding=UTF-8  

spring.datasource.url = jdbc:mysql://localhost:3306/crm
spring.datasource.username = root  
spring.datasource.password = mymysql  
spring.datasource.driverClassName = com.mysql.jdbc.Driver

vs

application.yml语法

server:  
  port: 80
  session-timeout: 30  
  tomcat.uri-encoding: UTF-8  

spring:  
  datasource:  
    url : jdbc:mysql://localhost:3306/crm  
    username : root  
    password : mymysql  
    driverClassName : com.mysql.jdbc.Driver

2、application.properties优先级

一个项目中可以有多个application.properties文件存放在不同目录中,此时他们会遵循固定的优先级来处理有冲突的属性配置, 优先级由高到底,高优先级的配置会覆盖低优先级的配置

  1. 项目/config/application.properties
  2. 项目/application.properties
  3. classpath:config/application.properties
  4. classpath:application.properties
    注意:一般都在classpath:application.properties做配置,其他方式不使用
相关文章
|
1天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服
|
3天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1540 5
|
1月前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
7天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
577 22
|
3天前
|
存储 SQL 关系型数据库
彻底搞懂InnoDB的MVCC多版本并发控制
本文详细介绍了InnoDB存储引擎中的两种并发控制方法:MVCC(多版本并发控制)和LBCC(基于锁的并发控制)。MVCC通过记录版本信息和使用快照读取机制,实现了高并发下的读写操作,而LBCC则通过加锁机制控制并发访问。文章深入探讨了MVCC的工作原理,包括插入、删除、修改流程及查询过程中的快照读取机制。通过多个案例演示了不同隔离级别下MVCC的具体表现,并解释了事务ID的分配和管理方式。最后,对比了四种隔离级别的性能特点,帮助读者理解如何根据具体需求选择合适的隔离级别以优化数据库性能。
201 3
|
10天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
10天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
571 5
|
23天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
6天前
|
XML 安全 Java
【Maven】依赖管理,Maven仓库,Maven核心功能
【Maven】依赖管理,Maven仓库,Maven核心功能
233 3
|
9天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
327 2