SpringBoot学习笔记【part01】基础入门

SpringBoot 学习笔记 Part01

1. SpringBoot快速入门

SpringBoot能快速创建出生产级别的Spring应用,学习SpringBoot我们需要用到它的官方文档:
https://docs.spring.io/spring-boot/docs/current/reference/html/

SpringBoot的系统要求是 Java 8、Maven 3.3+。

接下来我们先进行maven的一些配置,在maven的settings.xml里添加阿里云镜像,能让我们更快地下载所用的包,并设置编译版本,避免一些不必要的错误。

<mirrors>
    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
</mirrors>

<profiles>
    <profile>
        <id>jdk-1.8</id>
        <activation>
            <activeByDefault>true</activeByDefault>
            <jdk>1.8</jdk>
        </activation>
        <properties>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
            <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
        </properties>
    </profile>
</profiles>

入门案例需求:浏览网页时发送/hello请求,响应 Hello Spring Boot 2 !

1.1 创建maven工程,并引入依赖

导入父工程(固定写法),导入开发web场景的依赖。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.4.RELEASE</version>
</parent>


<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
1.2 创建主程序

@SpringBootApplication:向Spring表明这是一个SpringBoot应用,启动这个main方法即可启用SpringBoot应用并开启服务器,不用再自己手动配置Tomcat了。

@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class,args);
    }
}
1.3 编写业务

@RestController:这是@Controller、@ResponseBody等注解的结合体,声明这是啥一个Controller类并返回值不再是个地址给地址解析器而是直接输出到页面上。具体可以观察其源码。

@RestController
public class HelloController {

    @RequestMapping("hello")
    public String handle01(){
        return "Hello SpringBoot 2 !";
    }
}

到此直接运行main方法即可开启服务器进行入门程序的测试了。

2. 简化配置

SpringBoot为我们准备了一个统一的配置文件application.properties,所有配置都可以在这里更改(tomcat、springmvc等),不更改的话都是用的SpringBoot的默认配置,在官方文档中可以查看到。

例如,我们可以修改tomcat服务器的端口号为8888。

server.port=8888

3. 简化部署

加入插件后,用maven-clean、maven-package把项目打成jar包。

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

在这里插入图片描述

jar包在target文件夹里可以找到,可以通过cmd直接在目标服务器执行(注意,要取消cmd的快速编辑模式)。

在这里插入图片描述

4. 依赖管理特性

父项目做依赖管理:

导入的父项目。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.4.RELEASE</version>
</parent>

ctrl+左键 进入父项目的父项目。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.3.4.RELEASE</version>
</parent>

ctrl+左键 进入依赖管理。在此springboot几乎声明了所有开发中常用的依赖的版本号。

在这里插入图片描述

这是springboot的自动版本仲裁机制,因此我们引入依赖默认都可以不写版本,但引入非版本仲裁的jar仍需要写版本号。

若需要使用其他版本的jar包,我们也可以修改默认版本号。

  1. 查看spring-boot-dependencies里面规定当前依赖的版本用的标签名
  2. 在当前项目的pom.xml里重写配置
<properties>
    <mysql.version>5.1.43</mysql.version>
</properties>

5. starter场景启动器

我们见过很多 spring-boot-starter-* ,其中 * 表示的就是某种场景,比如batch、jdbc等。只要引入starter,这个场景的所有常规需要的依赖我们都自动引入。当我们用springboot进行web开发时引入的场景启动器如下:

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

SpringBoot所有支持的官方场景:
https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter

我们也可以使用第三方制作的场景启动器,比如我们见到的 *-spring-boot-starter 的命名格式,就是第三方为我们提供的简化开发的场景启动器。

所有场景启动器最底层的依赖都是基于如下:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>2.3.4.RELEASE</version>
    <scope>compile</scope>
</dependency>

6. 自动配置

以上4、5点为自动配置的一些原理,现在来进一步介绍springboot的自动配置。

  1. springboot为我们自动配好了tomcat。

    ​ 自动为我们引入了tomcat的依赖,且自动配置好了tomcat。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <version>2.3.4.RELEASE</version>
        <scope>compile</scope>
    </dependency>
    
  2. springboot为我们自动配好了springmvc。

    自动引入SpringMVC全套组件,且自动配好了springmvc的常用功能,如:DispatcherServlet、字符编码过滤器CharacterEncodingFilter、视图解析器ViewResolver、文件上传解析器MultipartResolver。

  3. springboot为我们自动配好了一些web常用的功能。

    ​springboot为我们自动解决了一些问题,如:字符编码问题
    springboot也帮我们配置好了所有web开发的常见场景,如:文件上传

我们可以通过获取IoC容器来看看springboot为我们具体准备了哪些组件。

@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
        String[] names = run.getBeanDefinitionNames();
        for (String name : names) {
            System.out.println(name);
        }
    }
}
6.1 默认的包结构

之前,我们需要手动进行xml配置指定需要扫描的包。而现在,主程序所在包及其下面的所有子包里面的组件都会被默认被springboot扫描进来,无需以前的扫描配置。

想要改变路径,可在**@SpringBootApplication**注解中加入属性scanBasePackages。

@SpringBootApplication(scanBasePackages="com.swz")

或者用老方法**@ComponentScan**来指定扫描路径。

@SpringBootApplication
等同于
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.swz.boot")
6.2 各种配置的默认值

springboot的统一配置文件application.properties里的各种配置都拥有默认值,如:

在这里插入图片描述

我们也可以对默认值进行修改。

spring.servlet.multipart.max-file-size=10MB

默认配置最终都是映射到某个类上,如:MultipartProperties。我们自己配置文件的值最终也会被绑定到每个类上,这个类会在容器中被创建对象。

6.3 springboot按需加载所有自动配置项

若我们的工程中有非常多的starter,引入了什么场景,那么这个的自动配置才会开启。Springboot所有的自动配置功能都在 spring-boot-autoconfigure这个包里。

例如,spring-boot-starter-web的父项目spring-boot-starter里就有一个spring-boot-autoconfigure包,里面都是用于自动配置的配置类(有许多报红的,是因为没有引入相关的场景,但由于springboot是按需加载的,只会使用那些我们引入且需要用到的配置类)。

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Parker7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值