最近在学习Spring Boot,所以打算做个教程,自己当笔记,也希望能够帮助一些其他的同学一起共同学习呀。今天的这个入门,会对Spring Boot进行简单介绍,并详细的实现Spring Boot的一个小Demo,让网页显示Hello World~
目录
一、Spring Boot及微服务的简介
1、简介:Spring Boot是Spring团队于2014年开始进行开发的一个简化Spring开发的框架。在spring官网下的项目里,Spring boot已经占据了非常主要的一个地位。
Spring Boot为J2EE开发的提供一站式解决方案。它能够帮助我们快速地建立一个企业级别的独立应用,简化Spring应用开发,思想为约定大于配置。在一定的约定下,我们可以将过往开发过程中复杂的配置过程进行简化,Just run即可建立一个应用程序。
2、Spring Boot特点:Spring Boot通过整合Spring的系列技术栈(我们在Spring官网下的Project中看到的一些内容,包括Spring Cloud等)来完成和简化应用开发,同时,以为Spring的特性,Spring Boot还能够与其他的框架(JUnit)进行集成。我们来看它有什么特别之处。
(1)自动配置:Spring Boot可以为项目进行大量的自动配置,简化项目的开发过程。但这种配置并不是不可修改的,开发人员也可以通过修改Spring Boot的配置文件对其进行修改。
(2)starters(启动器)自动依赖与版本控制:当我们进行Spring Boot项目开发时,开发功能时直接导入相对应的启动器,即可导入对应的依赖以及依赖的版本。以往我们进行依赖导入的时候需要手动进行,在网上搜索合适的资源有些jar包还有对应版本的依赖关系,十分麻烦。
(3)无xml配置,无代码生成:利用Spring Boot的内置api进行配置
(4)使用嵌入式Servle容器:在进行web开发时可直接打包成为.jar格式,通过java运行。与之前打包成为war再通过tomcat进行部署的方式相比简单了很多。
(5)便于运维和监控:Spring Boot提供了准生产环境的运行时监控,可以对应用的状态和服务的状态进行监控。
(6)集成云计算
Spring Boot是一个上手很快的开发框架,开发人员无需对框架的细节进行了解,只需要记住开发的规则并按照规则开发即可,十分便利。但由于Spring Boot是在Spring的基础上进行的,所以如果项目需要对Spring Boot进行深度配置,就需要开发人员继续学习Spring API的相关知识。所以想要能够深度了解Spring Boot的整个运行机制还是需要花费大量时间来学习的。
3、微服务:和单体应用(ALL IN ONE)一样,都是一种架构风格。微服务里一个应用是一组小型服务,通过HTTP的方式进行互通。每一个功能元素最终都是一个可独立替换和独立升级的单元。以下内容摘自知乎。
附:一个外文的微服务的详细介绍博客。
微服务导致了一个问题是部署和运维上的困难。对于此,Spring给出一个解决方案。Spring Boot进行快速构建微服务单元->通过Spring Cloud进行微服务单元间的互联->Spring Cloud流式计算、批处理等。
二、一个Spring Boot的HelloWorld的程序
本文将通过构建一个maven项目逐渐展示构建一个Spring Boot项目所需要一些必备的组件和注释,对于初学者来讲很有必要,如果想要更简单地构建一个Spring Boot的Hello World程序,可以看我的这篇博客。
1、开发环境
(1)jdk1.8:windows+R输入cmd打开命令行窗口,输入下述命令,显示你的jdk版本
java -version
(2)maven:Spring Boot要求maven 3.3版本以上,我使用3.6.0,安装教程
(3)Intellij IDEA:为方便描述下面使用IDEA作为简称。这里我使用的是IDEA 2018.3.5。 注(激)册(活):https://blog.csdn.net/zhanggonglalala/article/details/88547992
(4)Spring Boot:我使用的是1.4.3
2、环境配置:
(1)maven设置:打开maven安装目录下的conf文件夹下的settings.xml,最好使用notepade++、IDEA或者其他的xml编辑软件。然后再profiles下输入下列代码,然后保存,复制这个文件。在用户目录下,通常为C盘->你的用户名的文件夹下,找到名字为.m2的文件夹,将刚刚复制的settings.xml文件复制过来,如果该文件夹下没有repository文件夹就创建一个。
<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>
为什么需要两个settings文件?在用户目录下的,是针对于这个用户所建项目的maven配置;而maven目录下的settings文件是对这台机器建立的全部maven项目进行配置。所以通常情况下我们不轻易动maven安装目录下的settings文件。
(2)IDEA配置,使用本地的maven:打开IDEA,找到settings。
如果你是第一次打开IDEA,那么你应该是这样的界面,点击红框里的Configure第一个选项应该就是Settings:
如果你之前打开过IDEA,出现了项目编辑的界面,那么settings应该在file->settings下
在settings中搜索maven,出现下面的界面,对画框部分的内容进行设置,maven home directory部分应该选取自己的maven安装路径,会自动识别它的版本;User settings file和Local repository可以选择是maven安装目录下/用户目录下的.m2目录下的setting.xml文件和respository。两者的不同已经在之前的maven设置里说过了
3、新建maven项目:还是两种情况,如果之前没有打开过IDEA,直接点击界面上的Create New Project;如果是打开过就file->new->project,出现下面的界面,选择maven,然后确认以下Project SDK是否是自己安装的jdk环境,如果不是的话,点击右边的New,找到自己安装jdk的目录即可。
然后Next进入下面的界面,输入GroupId和ArtifactId,ArtifactId其实可以看做模块名,通常是和项目名一致。Version是版本号,1.0比1.0-SNAPSHOT要更加稳定,通常这里我们根据需要进行输入,因为我们是第一次构建,所以直接默认就可以了。Next。
输入Project name,通常IDEA会根据你的ArtifactId来自动填充,去掉其中的符号,我们这里选择调整和项目名一致,当然不一致也不会构建错误,但是还是一致会比较符合习惯。Project location那里会自动填充,你可以自己选择喜欢的位置,要注意路径的最后应与Project name一致,然后Finish。如果你选择的路径下没有对应的文件夹,IDEA可能会提示你是否创建一个新的文件夹,选择OK就可以了
项目目录如图,并在IDEA右下角会提示,是否自动应用maven项目,我们选择Enable Auto-Import,自动引用。这样maven就会根据我们项目中的pom文件自动引入jar包以及相关依赖,我们可以通过编辑pom文件就可以轻松引用一些相关的包。
4、导入Spring Boot依赖,打开pom.xml文件,在<project>下输入下面的代码,导入Spring Boot的依赖。parent表示当前项目继承了spring boot的项目,即使用了spring boot的架构。dependencies输入后会为项目自动下载项目所需要的spring boot web开发的一些基本依赖。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
然后我们就可以看到,External Libraries下是自动下载的一些依赖,很多…尽管我们只写了引入一个依赖,但是这个依赖还需要很多其他的jar包进行支持。
5、编写主程序,用于启动Spring Boot。在java目录下新建一个类,类名为HelloWorldMainApplication。如图,我们输入com.springboot.HelloWorldMainApplication,会在java目录下新建一个目录com.springboot,然后会把新建的类文件放到这个目录下。新建后路径也会贴图在下方。
添加注解@SpringBootApplication,注解@SpringBootApplication用于标注一个主程序类,来标注这是一个Spring Boot的应用,添加后的程序如下。添加注解输入“@SBA”IDEA就会为你自动找到对应注解,回车后就可自动添加对应包的引用,十分方便。
package com.springboot;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/*
*注解@SpringBootApplication用于标注一个主程序类,来标注这是一个Spring Boot的应用
*/
@SpringBootApplication
public class HelloWorldMainApplication {
}
编写主程序,输入快捷键“psvm”,即可。然后按照下面的代码对内容进行填充,注意是SpringApplication而不是SpringBoot'Application。
public class HelloWorldMainApplication {
public static void main(String[] args) {
SpringApplication.run(HelloWorldMainApplication.class,args);
}
}
6、编写Controller或者Service,实现功能。在com.springboot文件夹下新建一个类并同时新建controller文件夹,输入controller.HelloController。在类名前加上注解@Controller,表明这时一个Spring的Controller类,能够处理请求。
然后在类中定义一个返回值类型为String的相应方法,方法名为hello,返回“Hello World”。在方法前面加上两个注解,@ResponseBody和@RequestMapping,分别表示这个方法是相应的内容和据网页的什么请求进行相应,这里我们填写的是根据网页的hello请求进行相应。具体的完整代码如下。
package com.springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@ResponseBody
@RequestMapping("/hello")
public String hello(){
return "Hello World";
}
}
7、启动项目。找到主程序HelloWorldMainApplication,运行main方法。有下面三种方法可供选择:找到HelloWorldMainApplication类名点击右侧的绿色三角运行按钮;在目录下的HelloWorldMainApplication右键选择run;在HelloWorldMainApplication文件内容的任意位置右键,选择run。
启动后的日志如下,红框位置表示程序已经由Spring Boot内置的Tomcat启动,端口号为8080。
在任意浏览器中输入网址“http://localhost:8080/hello”,显示内容如下
8、部署。在项目中导入spring boot的插件,方法是,在pom.xml中的</project>前粘贴下面代码:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
使用IDEA建立项目的jar包,方法是,点击IDEA左下角->点击maven,召唤处IDEA中的maven界面。Lifecycle->package右键选择Run Maven Build。
在文件目录下生成了一个target文件夹,下面有一个生成的jar包,使用的是“项目名称-版本号”进行命名。这个jar包里不仅包括我们刚刚编写的代码,还有通过pom文件自动下载的依赖。
在文件夹中找到这个jar包的位置,在文件路径位置输入cmd,快速在此位置打开命令行,输入“java -jar 文件名”,进行项目部署。注意文件名应该包括后缀。
布置成功的命令行界面如上,现在我们进行与启动项目类似的操作,在浏览器中输入http://localhost:8080/hello,显示: