经过前面的六篇文章,Spring Framework的知识终于大致讲完了,但是Spring AOP还没提到,个人认为Spring AOP更适合放在Spring MVC之后再讲解,而讲解Spring MVC前先学习Spring Boot的目的也是为了在学习Spring MVC的时候直接使用Spring Boot来创建项目,从现在起我们就要进入Spring Boot的时代了。
1. 什么是Spring Boot?
Spring Boot是由Pivotal团队提供的全新框架,Spring Boot翻译过来其实就是Spring的脚手架,脚手架的作用自然就是为了更快速的盖房子。如果说Spring的诞生是为了降低Java程序的开发成本的,那么Spring Boot的诞生是为了简化Spring应用的初始搭建以及开发过程。
2. Spring Boot优点
以下优点可在后续慢慢体会:
- 快速集成框架,Spring Boot 提供了启动添加依赖的功能,用于秒级集成各种框架;
- 内置运行容器,无需配置 Tomcat 等 Web 容器,直接运行和部署程序;
- 快速部署项目,无需外部容器即可启动并运行项目;
- 可以完全抛弃繁琐的 XML,使用注解和配置的方式进行开发;
- 支持更多的监控的指标,可以更好的了解项目的运行情况;
3. Spring Boot 创建项目
3.1在idea中选择Spring Initializer构建项目
Group对应组织id,Artifact对应项目id,Language选择Java,Type选择Maven,Packaging选择jar包,这里就不多说了。
3.2 选择合适的源
Spring Boot项目的工程模板是从远程pull下来的,因此要在创建之初选择合适的源,为了支持Java8,我这里选择使用阿里云的源(https://start.aliyun.com):点击小齿轮进行更改
3.3 选择版本号并且快速添加依赖
点击Next后就可以选择Spring Boot的版本号和添加常用依赖了,这里我选择Spring Boot 2.7.6版本,并且之后的项目也是一样。
在0.开篇:SSM+Spring Boot导学
中就提到了Spring Boot 提供了启动添加依赖的功能,用于秒级集成各种框架的优点,可以通过图形化界面在启动项目之初勾选添加项目需要的依赖
这里我引用了一些常用的依赖(除数据库相关):
- Lombok:LomBok可以通过注解,帮助开发人员消除JAVA中尤其是POJO类中 的冗长代码。
- Spring Web:提供Web框架,使项目具有处理HTTP请求的能力
选择完依赖后点击Create,Spring Boot的项目就成功创建好了。
创建好项目后点击springboot_demo包下的SpringBootDemoApplication类,发现该类上面有一个@SpringBootApplication的注解,这就表示该类为Spring Boot项目的启动类。
3.4 启动项目
编写一个Spring Web的路由方法进行测试:
//一个新的注解,后面会讲到
@RestController
public class TestController {//配置路由@RequestMapping("/sayHello")public String sayHello() {return "Hello my first Spring Boot!";}
}
点击三角形启动项目,并在Console中打印了Started SpringBootDemoApplication in 1.41 seconds (JVM running for 2.195)
就代表这个项目已经正常跑起来
用浏览器通过路由访问:
3.5 jar包导入失败问题解决方案
jar包导入失败的主要原因是maven的默认拉取jar包的源是国外的源,下载速度极慢,这里我们需要配置maven的国内源:
1) 关闭项目
2) 点击Customize修改设置
3) 配置所有项目的设置
4)使用本地的setting.xml和repository缓存仓库
两个文件位于本地maven的对应路径,路径中一定不要出现中文!覆盖setting.xml是为了下一步引入国内镜像源,覆盖repository是为了之后缓存已下载的jar包,后续构建项目可省去下载步骤
5)配置好点击Apply+OK
这样设置完之后的项目的properties文件就都是以utf-8来编码的了,当前项目的话还需自己手动打开当前项目的设置,其他步骤和前面一样:
6)设置国内镜像源
打开settings.xml文件(推荐使用VSCode)
<mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url>
</mirror>
修改完保存即可。
7)打开并重新加载Maven项目
4. Spring Boot项目目录结构
先把不用的文件给删掉:
大体分为三个部分:源代码目录、资源目录和测试目录
源代码目录:
标蓝的文件夹就是编写存放java源代码的目录,只有在这个目录下右键才能新建.java文件,这里不多讲了。
资源目录:
static目录:一般用于存放项目的前端静态文件如:html/css/js/jpg
等等。
application.properties:Spring Boot项目的配置文件,里面都是键值对形式的语句,如通过server.port=8080
可以设置web项目的端口号。
测试目录:
该目录的结构和源代码目录的结构一致(增加可读性),用于编写对应类的测试代码,之后会讲到。
pom.xml文件:
由于该Spring Boot项目还是基于Maven的,因此还是需要pom.xml
文件,有些通过图形化界面无法引入的依赖还是得通过该文件引入依赖坐标。
5. 【小结】约定大于配置
SpringBoot 核心的设计思想:约定大于配置
把TestController类从controller的包移动到chenshu的包下:
再次访问路由发现错误信息:
TestController类已经通过@RestController注解修饰了,但为什么报了404错误呢?原因是Spring Boot只会扫描启动类的同一级目录或者子目录下的Bean,想想曾经的Spring项目,是不是还要通过一个.xml配置文件,然后添加一个扫描路径,而Spring Boot的做法是直接舍弃了这个配置,用约定来约束。
SpringBoot的其他默认约定有:
-
Maven的目录结构:默认有src-main-resources文件夹,存放资源配置文件。src-main-java存放源文件,默认的编译生成的类都在targe文件夹下面;
-
spring boot默认的配置文件只能是application.命名的yml文件或者properties文件,且唯一;
-
application.properties中的默认键名称,如数据库连接信息必须是以spring.datasource为值;
-
当我们导入spring-boot-starter-web后,就会自动帮我们导入springMVC的相关依赖和一个内置的tomcat容器,以及spring-boot-starter-logging依赖。这使得在开发阶段可以直接通过 main 方法或是 JAR 包独立运行一个 WEB 项目。
-
SpringBoot 约定以 starter 的形式减少依赖,于是相继推出了不少常用的 starter。