我要精通SpringBoot之SpringBoot快速入门2

SpringBoot快速入门

SpringBoot 是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。

大家已经感受了 SpringBoot 程序,回过头看看 SpringBoot 主要作用是什么,就是简化 Spring 的搭建过程和开发过 程。

原始 Spring 环境搭建和开发存在以下问题:

  • 配置繁琐

  • 依赖设置繁琐

SpringBoot 程序优点恰巧就是针对 Spring 的缺点

  • 自动配置。这个是用来解决 Spring 程序配置繁琐的问题

  • 起步依赖。这个是用来解决 Spring 程序依赖设置繁琐的问题

  • 辅助功能(内置服务器,…)。我们在启动 SpringBoot 程序时既没有使用本地的 tomcat 也没有使用 tomcat 插件,而 是使用 SpringBoot 内置的服务器。

接下来我们来说一下 SpringBoot 的起步依赖

1.1 SpringBoot的起步依赖

我们创建的SpringBoot工程中的pom.xml配置文件中生成了很多包含starter的依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.hyj</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>demo</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

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

</project>

这些依赖就是启动依赖,我们来看一下它是如何实现的

1.2 探索依赖

在我们创建的工程中的 pom.xml 中配置了如下依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
</dependency>

点击ctrl+鼠标左键进入该依赖,我们能够发现它引入了如下的依赖

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <version>3.2.5</version>
      <scope>compile</scope>
</dependency>
<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>6.1.6</version>
      <scope>compile</scope>
</dependency>
<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>6.1.6</version>
      <scope>compile</scope>
</dependency>

这里面引入了spring-web 和 spring-webmvc 的依赖,这就是为什么我们的工程中没有依赖这两个包还能正常使用 springMVC 中的注解的原因

而依赖 spring-boot-starter-tomcat ,从名字基本能确认内部依赖了 tomcat ,所以我们的工程才能正常启动

从中我们可知:以后需要使用技术,只需要引入该技术对应的起步依赖即可

小结:

1.starter

  • SpringBoot 中常见项目名称,定义了当前项目使用的所有项目坐标,以达到减少依赖配置的目的

2.parent

  • 所有 SpringBoot 项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的

  • spring-boot-starter-parent (2.5.0)与 spring-boot-starter-parent (2.4.6)共计57处坐标版本不同

3.实际开发

  • 使用任意坐标时,只需要书写groupid和artifactid,version会由SpringBoot提供

  • 如发生坐标错误,再指定version(要小心版本冲突)

1.3 程序启动

我们创建每一个SpringBoot工程时,都会自动生成一个Application类

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}
注意:
  • SpringBoot 在创建项目时,采用jar的打包方式

  • SpringBoot 的引导类是项目的入口,运行 main 方法就可以启动项目

因为我们在 pom.xml 中配置了 spring-boot-starter-web 依赖,而该依赖通过前面的学习知道它依赖 tomcat ,所以 运行 main 方法就可以使用 tomcat 启动咱们的工程

2.1 配置文件格式

我们现在启动服务器默认的端口号是 8080 ,访问路径可以书写为

http://localhost:8080/books/1

在线上环境我们还是希望将端口号改为 80 ,这样在访问的时候就可以不写端口号了,如下

http://localhost/books/1

而 SpringBoot 程序如何修改呢? SpringBoot 提供了多种属性配置方式

  • application.properties
server.port=80
  • application.yml
server:
 port: 81
  • application.yaml
server:
 port: 82

注意: SpringBoot 程序的配置文件名必须是 application ,只是后缀名不同而已

2.2 环境准备

这里我们依旧在包下创建一个Controller类

@RestController
@RequestMapping("/books")
public class Controller {
    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id) {
        return "Hello World";
    }
}

2.3 不同配置文件演示

  • application.properties 配置文件

现在需要进行配置,配合文件必须放在 resources 目录下,而该目录下有一个名为 application.properties 的配置文 件,我们就可以在该配置文件中修改端口号,在该配置文件中书写 port , Idea 就会提示,如下
在这里插入图片描述

application.properties 配置文件内容如下

server.port=80

启动程序,会在控制台打印出日志信息,从日志信息中可以看到绑定的端口号已经修改成80
在这里插入图片描述

  • application.yml配置文件

删除 application.properties 配置文件中的内容。在 resources 下创建一个名为 application.yml 的配置文件,在 该文件中书写端口号的配置项,格式如下:

server:
 port: 81

注意: 在 : 后,数据前一定要加空格

而在 yml 配置文件中也是有提示功能的,我们也可以在该文件中书写 port ,然后 idea 就会提示并书写成上面的格式
在这里插入图片描述

启动程序,会在控制台打印出日志信息,从日志信息中可以看到绑定的端口号已经修改成81
在这里插入图片描述

  • application.yaml配置文件

删除 application.yml 配置文件和 application.properties 配置文件内容,然后在 resources 下创建名为 application.yaml 的配置文件,配置内容和后缀名为 yml 的配置文件中的内容相同,只是使用了不同的后缀名而已 application.yaml 配置文件内容如下:

server:
 port: 82

启动程序,会在控制台打印出日志信息,从日志信息中可以看到绑定的端口号已经修改成82
在这里插入图片描述

2.4不同配置文件的优先级

在三种配合文件中分别配置不同的端口号,启动服务查看绑定的端口号。用这种方式就可以看到哪个配置文件的优先级更高 一些

application.properties 文件内容如下:

server.port=80

application.yml 文件内容如下:

server:
 port: 81

application.yaml 文件内容如下:

server:
 port: 82

启动服务,在控制台可以看到使用的端口号是 80 。说明 application.properties 的优先级最高

注释掉 application.properties 配置文件内容。再次启动服务,在控制台可以看到使用的端口号是 81 ,说明 application.yml 配置文件为第二优先级

从上述的验证结果可以确定三种配置文件的优先级是:

application.properties > application.yml > application.yaml

注意: SpringBoot 核心配置文件名为 application SpringBoot 内置属性过多,且所有属性集中在一起修改,在使用时,通过提示键+关键字修改属性 例如要设置日志的级别时,可以在配置文件中书写 logging ,就会提示出来。配置内容如下

logging:
 level:
   root: info
  • 29
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值