1.概念
官网地址: https://spring.io/
1.1介绍
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot致力于在蓬勃发展的快速应用开发领域成为领导者。
2013年,Pivotal团队开始研发SpringBoot。
2014年4月,发布全新开源的轻量级框架的第一个SpringBoot版本。
原博文:https://www.sohu.com/a/286995880_684445
1.2 特点
为什么要学习SpringBoot?
SpringBoot是为了简化Spring应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程
未接触SpringBoot之前,搭建一个普通的WEB工程往往需要花费30分钟左右,如果遇到点奇葩的问题耽搁的时间会更长一点,但自从用了SpringBoot后,真正体会到什么叫分分钟搭建一个WEB,让我拥有更多的时间跟我的小伙伴们唠嗑了。使用SpringBoot后发现一切是如此的简单(还记得被JAR包,xml支配的恐惧吗,如今都可以说 good bye)
在传统的一些框架中(SSH、SSM、Servlet/JSP) 虽然功能很强大但是配置起来太麻烦了,相比python或者php ,Java就略显臃肿,主要问题集中在两点:
- 复杂的配置文件:
项目之间各种配置文件铺天盖地,在开发的过程中占用了大量的时间,并且需要做这些配置文件进行维护, 整个项目感觉特别复杂,并且Java代码和配置文件之间的切换开发,给程序人员带来很大的负担。 - 各种依赖比较混乱:
主要问题就是版本冲突,不同技术的版本需要我们知道哪些版本存在冲突问题,一旦使用错误就需要重新再去下载库进行依赖。
而Spring Boot简化了基于Spring的应用开发,只需要一个”run”就创建了一个独立的、生产级别的Spring应用,Spring boot为Spring平台及第三方提供了开箱即用的设置(默认设置的包就是启动器starter),这样我们就可以简单的开始。Spring Boot主张,用最少的配置做更多的事。如果我们创建一个Java应用,并使用java -jar启动,就能得到一个生产级别的web工程。
特点:
创建独立的 Spring 应用程序
直接嵌入Tomcat、Jetty或Undertow(无需部署WAR文件)
提供自以为是的“入门”依赖项以简化您的构建配置
尽可能自动配置 Spring 和 3rd 方库
提供生产就绪功能,例如指标、运行状况检查和外部化配置
完全不需要代码生成,也不需要 XML 配置
SpringBoot = Spring+SpringMVC
2.项目搭建
2.1目录结构
- src
- -main
- -java
- -package
#主函数,启动类,运行它如果运行了 Tomcat、Jetty、Undertow 等容器
–SpringbootApplication
-resouces
#存放静态资源 js/css/images 等 - statics
#存放 html 模板文件 - templates
#主要的配置文件,SpringBoot启动时候会自动加载
application.yml/application.properties - application.yml
#测试文件存放目录
-test
#pom.xml 文件是Maven构建的基础,里面包含了我们所依赖JAR和Plugin的信息 - pom
- -package
<?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.7.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- 项目信息 -->
<groupId>com.its</groupId>
<artifactId>HelloSpringBoot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>HelloSpringBoot</name>
<description>HelloSpringBoot</description>
<!-- 属性配置 -->
<properties>
<java.version>1.8</java.version>
</properties>
<!-- 依赖信息 -->
<dependencies>
<!-- SpringBoot web工程依赖 -->
<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>
2.1 自定义Banner
SpringBoot启动的时候我们可以看到如下内容,这一块其实是可以自定义的哦,而且在 2.X 版本中,它支持的格式从文本扩展到banner.txt、banner.jpg、banner.gif、banner.jpeg等等,只需要在resouces目录下添加指定命名的文件即可
2.2 查看SpringBoot默认提供的Bean
package com.its;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import java.util.Arrays;
@SpringBootApplication
public class HelloSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(HelloSpringBootApplication.class, args);
}
@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
return args -> {
System.out.println("来看看 SpringBoot 默认为我们提供的 Bean:");
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
Arrays.stream(beanNames).forEach(System.out::println);
};
}
}
2.3手动注入bean
//注入一个bean
@Bean
public Student student(){
return new Student("张三");
}
运行查看是否注入
控制层可以注解读取