走进springboot~

什么是springboot

就是一个javaweb的开发框架,和SpringMVC类似,对比其他javaweb框架的好处,官方说是简化开发,约定大于配置you can “just run”,能迅速的开发web应用,几行代码开发一个http接口。
Spring Boot基于Spring 开发,Spirng Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring 开发者体验的工具。SpringBoot以约定大于配置的核心思想,默认帮我们进行了很多设置,多数Spring Boot应用只需要很少的Spring 配置。同时它集成了大量常用的第三方库配置(例如Redis、MongoDB、Jpa、RabbitMQ、Quartz等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用,简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包, spring boot整合了所有的框架。
Spring Boot出生名门,从一开始就站在一个比较高的起点,又经过这几年的发展,生态足够完善,Spring Boot 已经当之无愧成为Java领域最热门的技术。

springboot优点

  • 为所有Spring开发者更快的入门
  • 开箱即用,提供各种默认配置来简化项目配置
  • 内嵌式容器简化Web项目
  • 没有冗余代码生成和XML配置的要求

第一个springboot程序

  • 用idea创建项目
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
这样一个springboot项目就创建完了。
在这里插入图片描述
可以看到这个主函数,运行它然后访问本地8080端口有如下图结果:
在这里插入图片描述
说明就是成功一半了。
在这里插入图片描述

  • 然后我们在创建的项目名包下创建controller包,并编写如下程序:
package com.lei.helloworld.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    
    

@RequestMapping("/hello")
    public String hello() {
    
    
        return "hello springboot";
    }
}

然后访问hello,结果如下:
在这里插入图片描述
可见这是和之前学习的springmvc很类似,但比springmvc简便太多了,我们从创建一个空项目到现在,就编写了controller,就可以直接访问到,省去了很多配置文件,可见springboot是自动装配的。

  • pom.xml
<?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>2.4.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.lei</groupId>
    <artifactId>helloworld</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>helloworld</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</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>

可见springboot所导入的依赖都是以spring-boot-starter开头的。

  • 也有人可能会遇到主函数运行失败,是由于8080端口被占用的缘故,那么这里也可以很方便的解决这个问题:
    在这里插入图片描述
    在这里插入图片描述
    在对应文件里编写如上程序,重启项目,就可以实现端口更换。

  • 更换主函数运行时开头图案:
    在这里插入图片描述
    在这里插入图片描述
    在如下目录里创建banner.txt,然后将喜欢的图案放进去,重启项目,就可以成功了。
    在这里插入图片描述

原理初探

自动配置
pom.xml

  • spring-boot-dependencies :核心依赖在父工程中!
  • 我们在写或者引入一些springboot依赖的时候,不需要指定版本,就因为有这些版本仓库

启动器

      <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
  • 启动器:说白了就是Springboot的启动场景;
  • 比如spring-boot-starter-web,他就会帮我们自动导入web环境所有的依赖!
  • springboot会将所有的功能场景,都变成一个个的启动器
  • 我们要使用什么功能,就只需要找到对应的启动器就可以了starter

主程序

@SpringBootApplication  //标注这个类是一个springboot应用
public class HelloworldApplication {
    
    

    public static void main(String[] args) {
    
    
    //将springboot应用启动
        SpringApplication.run(HelloworldApplication.class, args);
    }

}

在这里插入图片描述
springboot所有自动配置都是在启动的时候扫描并加载: spring.factories所有的自动配置类都在这里面,但是不一定生效,要判断条件是否成立,只要导入了对应的start,就有对应的启动器了,有了启动器,我们自动装配就会生效,然后就配置成功!

这就是自动装配的原理!精髓:
1)SpringBoot启动会加载大量的自动配置类
2)我们看我们需要的功能有没有在SpringBoot默认写好的自动配置类当中;
3)我们再来看这个自动配置类中到底配置了哪些组件;(只要我们要用的组件存在在其中,我们就不需要再手动配置了)
4).给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。我们只需要在配置文件中指定这些属性的值即可;

xxxxAutoConfigurartion:自动配置类;给容器中添加组件
xxxxProperties:封装配置文件中相关属性;

猜你喜欢

转载自blog.csdn.net/AIJXB/article/details/113481244