springboot一:创建第一个springboot以及该注意的问题
前言
SpringBoot优点
- 创建独立的spring应用。
- 嵌入Tomcat、Jetty而且不需要部署他们直接运行。(刚开始的时候我就犯了一个特别蠢的问题,去运行Contoller的时候自己手动的配置了一个Tomcat,然而直接运行SpringBoot的入口类就可以了。)
- 提供“starters”来简化Maven的配置。
- 尽可能自动配置spring应用,绝对没有代码生成和XML生成。
- 提供生产指标、健壮性检查和外部化配置
输出一个Hello SpringBoot
一个细节性问题,在新建项目之前需要将编码格式改成utf-8的格式,防止自己到时候还要处理一些不必要的问题。
我是使用的是IDEA。
1.点击创建项目按钮。选择Maven(当然可以选择 Spring Initializr一步完整建立,我是才入门,所以选择最为复杂的,想去具体了解其中的原理),确定SDK版本没有什么问题后点击next。
2.确定GroupId和ArtifactId,点击next。
3.检查没有什么问题后点击next。
4.项目创建完成后,这是一个Mave项目,我们得添加SpringBoot的基础配置,首先到官网
https://spring.io/projects/spring-boot。然后在Learn中找到最新版本打开他的文档。然后在找到 Maven Installation 。
→→→→→→→→→→
→→→→→→→→→→打开文档
打开Maven installation,将里面的SpringBoot配置复制到项目的Pom.xml文件中。让IDE自动加载其主要配置。
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.yangxin.learnspringboot</groupId> <artifactId>firstlearn</artifactId> <version>1.0-SNAPSHOT</version> <!-- Inherit defaults from Spring Boot --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> </parent> <!-- Add typical dependencies for a web application --> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <!-- Package as an executable jar --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
5.已经完成配置导入,IDE自动加载。点击External Libraries可以看到SpringBoot自动导入的依赖;在Spring中的话,这些都需要我们自己去导入。
6.整体的目录结构和原来Maven没有什么区别,src/main/java 存放java逻辑;src/main/resources 存放资源配置文件;src/test 则是测试相关的。在java包下建立一个org.yx.springboot包(包名不一定要相同);重点来了:SpringBoot是将大多数配置都自动完成,不需要Tomcat等这些容器,所以我们需要创建启动SpringBoot的启动类。
7. 建立XXXXXApplication.java,在类的上面使用@SpringBootApplication注解来标明这是一个SpringBoot的启动类,但是启动只能有一个,这个注解也只能使用一次;然后声明JAVA函数入口函数main,再使用SpringApplication.run调用执行入口。基本的Spring的配置完成。如果使用spring Initializr会一步到这儿。
8.建立一个Controller测试一下。新建SpringController,如下
9.在入口类中启动SpringBoot。
如果控制台出现如下信息,表示已经启动成功。那么我们访问http://localhost:8080/index。得到输入字符串:Hello Spring Boot!
那么表示一个简单SpringBoot完成。(刚开始摸索的时候,我以为还要配置Tomcat,在这步的时候,我选择去配置Tomcat,然后访问http://localhost:8080/index,怎么都是错误,手动捂脸)。
输出一个Hello SpringBoot下的分析
1.关于pom.xml的分析:
①:在让这个小项目运行起来的时候,我们在pom.xml中配置<parent>标签。这个标签的作用是什么:这个标签是一个版本控制,在父模块的父模块存储了所有默认依赖的jar包的全部版本信息。在SpringBoot的pom.xml的配置中,我们不需要像在Spring 中配置版本信息,虽然这个在IDE中也很方便,但是在其他编译环境就没有这么便利,比如eclipse。
我们把鼠标放在spring-boot-starter-parent上,按住ctrl+鼠标左键,我们进入到其父模块中,看到还有一个父模块,再进入父模块。
我们发现在这里面存储所有jar包的版本信息,非常的多,我们在配置parent的启动器(starter)时,这些都自动调用进来,十分的方便。
②:我们还配置了web的应用场景,starter叫启动器/应用场景,我们配置的是web的应用场景,那么SpringBoot会自动的加载配置与web相关的jar包,不需要像spring一样自己配置。SpringBoot中还提供了44种应用场景。
我们回到当初配置pom.xml的官方文档https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/htmlsingle/。找到第三章的Starters。
我们发现非常多的各种场景的启动器,SpringBoot都做了相应的打包,如果需要相应的功能,直接配置相应启动器。配置什么的都交给SpringBoot。
虽然SpringBoot给出了很多的启动器,但是在一些特别大的项目的时候,所给的启动器不满足业务要求,通常需要我们自己去内制一个特定的启动器。
我是在学习这些新东西的时候,通常习惯去翻官方文档,虽然英语不好,不过这个学习效率还是挺高。
2.程序入口类分析XXXXApplication.
①:使用注解@SpringBootApplication声明,表示这个类是主类,是SpringBoot的执行入口,没有这个注解的类当然不是执行入口咯。没有执行入口,那么SpringBoot是启动不了的。所以在SpringBoot上这一点十分重要。
②:关于main函数中的SpringApplication.run(XXXXApplication.class,args)。第一个参数的意义:就是指明Spring扫描组件的范围:是XXXXApplication这个类所在包的以及所在包的自包。只有在这个范围的controller、service、dao、等才会被扫描,不然是不会被扫描到的。如下图。
结语
1.SpringBoot是微服务开发的入门级框架。微服务就是将系统分割成一个个能够独立运行的jar包。
2. 这只是学习SpringBoot的创建方式,比较麻烦,真正应用的时候是创建Spring Initializer,这个十分方便和快捷。唯一不同的是,在创建过程中可以勾选将要使用到的启动器。
3.感谢https://www.cnblogs.com/ityouknow/p/5662753.html,这篇博客的入门。
萌新入坑SpringBoot,博客肯定有很多不足的地方,希望大家指正、一起讨论和学习。