背景
工作一直比较忙,好久都没写博客了,最近项目空闲期刚好能好好研究研究技术,顺便写写博客。
本人一直想写一个自己的博客系统,但是前端技术不好而搁置好久,学习了下HTML,CSS,JS...感觉自己小有所成,准备着手自己的博客系统,由于系统还没写完,先在这里写写心得吧。(本文启发与王福强老师的《Spring Boot揭秘》,文中有些内容取自于此书,哈哈,我也是站在巨人的肩膀上。)
Spring Boot
说起Spring Boot就得说到微服务,大家都知道微服务现在是越来越火了,所以本人打算用Spring Boot为框架搭建自己的博客系统,一来可以学习学习新技术,二来还能实现多年的博客梦,一举两得。先在网上查了查资料,发现网上有很多Spring Boot的教程,不过零散的地方也很多,Spring Boot的坑也是遇到一个又一个,国内的官方文档还是比较少,希望能通过这篇文章让大家和我一起了解Spring Boot并且一起爬坑吧(欢迎大神批评指导)。
何为微服务
微服务(Microservice)是当下刚兴起的比较流行的新名词 ,之所以叫微服务,是与之前的服务化思路和实践相比较而来的,早些年的服务实现和实施思路是将很多功能从开发到交付都打包成一个很大的服务单元(一般称为Monolith), 而微服务实现和实施思路则更强调功能趋向单一, 服务单元小型化和微型化。比如我们吃火锅,大家可以用一个大锅一起吃,微服务化之后就成了单人单锅,不过我还是觉得大锅一起好吃啊,涮个牛肚,来分肉卷...想想口水都出来了,(⊙o⊙)…扯远了。所以从理念上说,微服务就是倡导大家尽量将功能进行拆分,使之独立承担对外服务的职责,沿着这个思路开发和交付的软件我们就称为“微服务”。
Spring Boot介绍
Spring Boot关键还是在于Boot,它就是让我们快速启动一个Spring应用。所以要使用Spring Boot我们就得理解Spring框架。
关于Spring框架我就不在这里详细说明了,简单的给大家说一下。毕竟它也不是一句两句能说完的,不懂的同学可以网上看看Spring框架的详细介绍。
Spring是一个轻量级的开发框架(当然也有人说他挺重的),它致力于让广大JAVA开发者构建高效的研发体系,博主认为它就是一个开发必备良器啊。为了方便Spring Boot的理解,在这里给大家说说Spring IoC。
Spring IoC(控制反转)是一种设计思想,它有两种方式,一种就是DI,而另一种是 DL,即Dependency Lookup(依赖查找),前者是当前软件实体被动接受其依赖的其他组件被 IoC 容 器注人,而后者则是当前软件实体主动去某个服务注册地查找其依赖的那些服务。咱们所说的IoC实际就是对IoC容器的实现。如下:
ApplicationContext context= new FileSystemXmlApplicationContext("......");
XXXService service= context.getBean(XXXService.class);
serivce.doSomething();
这行代码做的就是DL的工作,而构建的任何一种IoC容器背后(比如 BeanFactory或者ApplicationContext)发生的事情,则更多是DI的过程(也可能有部分DL的逻辑用于对接遗留系统)。Spring 框架最早是通过 XML 配置文件的形式来描述 bean 与 bean 之间的关系的 随着 Java 业界研发技术和理念的转变,基于Java 代码和 Annotation 元信息的描述方式也日渐兴盛(比如@Autowired 和@Inject)。
关于Spring我就说这么多了,大家想学习可以在网上找找资料,或者看看王富强老师的《Spring揭秘》。
搭建Spring Boot
本文使用的编译工具是IDEA,所以搭建流程也是IDEA。有兴趣的同学可以使用这个工具。
1.首先我们先创建一个新项目File--New--project ,选择 Spring Initializr,Project SDK 选择 1.8,URL 选择默认的,点击 Next
2.项目信息配置
Name:项目名称
Type:我们是Maven构建的,那么选择第一个Maven Project
Packaging:打包类型,打包成Jar文件,Spring Boot是打包成Jar的,不过也可以打包成war,后面会介绍。
Java Version:jdk版本,选择1.8
Language:开发语言,选择Java
Group:对应pom文件中的groupId,项目组织的唯一标识,对应Java包的结构
Artifact:对应pom文件的artifactId,项目唯一标识,对应项目名称
Version:项目版本,对应pom文件的version
Description:项目描述,对应pom文件的description
Package:包名
4.填写项目名称,项目存放的目录,点击 Finish
我们可以看下项目的架构,红框内容可以删除。
看看生成的pom.xml文件内容,在此需要maven知识,希望同学们能去学习学习,方便我们jar管理已经项目的构建。
<?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>com.roger</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<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>
我们得Spring Boot项目都是要依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
其中
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
</parent>
是父项目,就和java的继承一样,我们可以使用父项目的jar,
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
是我们启动Spring Boot所需要的jar包,spring-boot-starter-web包含了很多内容,spring-webmvc、spring-web、jackson、validation、tomcat、starter。
在此项目的搭建算是完成了,我们可以新建一个Controller和index.html页面试试效果。
@RestController
public class TestController {
@RequestMapping(value = "/hello")
public String hello() {
return "hello,Spring Boot";
}
}
@RestController的意思就是controller里面的方法都以json格式输出,不用再写什么jackjson配置的了!
项目启动类就是自动生成的DemoApplication
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
我们可以通过main方法的启动方式启动Spring Boot项目。
如果没有报错这样就是启动成功了。
浏览器输入http://127.0.0.1:8080/hello,OK访问成功。
这样我们得一个Spring Boot项目就启动完成了,是不是很简单,接下来要介绍具体的使用。今天就到这里吧。