最近听到SpringBoot,微服务的关键词越来越多。问了一下在工作的朋友,他说他们好几个项目重构已经使用了SpringBoot了,感觉SpringBoot是未来的趋势,毕竟技术不断迭代,很多繁杂的东西终将会被抛弃~
1.SpringBoot简介
SpringBoot是用来简化Spring应用开发的,约定大于配置,去繁从简符合了时代的发展。just run就能创建一个独立的,产品级别的应用
背景:
回想一下我们刚学javaee的时候,学到框架知识的时候(目前流行的Spring,SpringMVC,Mybatis);整合起来脑袋非常疼,繁多的配置,不断的依赖,不断的配置bean,很多的时候时间都花在了搭建工程上面,真是想起来头都大!
解决:
发现了弊端,就要想解决方法,这个时候SpringBoot出现了,SpringBoot就是Spring的全家桶,请看以下的图片。从图片中我们可以看出SpringBoot集成了我们以前用过的很多东西,jdbc,SpringMVC等
优点:
- 快速创建独立运行的Spring项目以及主流框架的整合
- 使用嵌入式Servlet容器,应用无需打包成WAR包(连Tomcat也省了!!!)
- starters自动依赖与版本控制(依赖都来这里啦!)
- 大量的自动配置,简化开发,也可以修改默认值(还要看见xml吗?从此说拜拜!)
- 无需配置XML,无代码生成
- 准生成环境的运行时应用监控(随时随地,掌握信息!)
- 与云计算的天然集成(高大上,不太懂。。。)
2.微服务
说到SpringBoot也不得不提一个最近也很火的概念----微服务;微服务是一位大牛提出来的,里面有详细的文章介绍(传送门:https://martinfowler.com/articles/microservices.html#MicroservicesAndSoa)。
单体应用
我们来看看我们以前传统的应用,我们以前一般都是All In One,就是所有功能,模块都写在同一个工程中
我们把所有的页面,代码都放在一个应用里面打包成war包放在tomcat里面,这种模式的优点是:开发测试简单,因为都是在一个应用里面,不涉及多个应用的互调等;容易部署;容易水平扩展,当我们一个服务器跑不动的时候,弄个集群,弄个负载均衡。缺点是:容易牵一发而动全身,改了某些功能,会影响整个系统的运作,又要重新部署;日益增长的软件需求,我们现在谈到一个分布式的概念,如果我们全部功能都集成在一个工程下面的话,我们的团队合作会受阻,维护也会成为问题
微服务
每一个功能元素最终都是一个可独立替换和独立升级的软件单元;
微服务由于被分割成很多服务,因此对于运维和配置、部署也太麻烦了~那么怎么解决呢?
这就要用SpringBoot啦
观察一下官方SpringBoot的图,配置我们可以用SpringBoot来快速搭建,服务之间怎么通信调用呢,我们用SpringCloud,一些批处理怎么处理呢我们利用DataFlow来解决
微服务和SOA(面向服务的架构)的区别
在了解微服务的时候由于是分布式的,这个时候想起了以前接触过的一个知识点SOA架构,分享比价好的一篇文章
https://blog.csdn.net/yingzai1010/article/details/79459463
3.环境准备
利用SpringBoot开发,要准备一下环境
- JDK1.8(推荐使用1.7以上)
- maven3.X(我用的是3.3.9)
- Idea(神器,赶紧上手吧)
- SpringBoot 1.5.2.RELEASE;
4.创建一个SpringBoot案例
1.创建一个Maven工程
2.填写对应信息
3.导入相关依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐starter‐parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐starter‐web</artifactId>
</dependency>
</dependencies>
4.编写一个主程序
/**
* @SpringBootApplication 标注一个主程序类,说明这是一个SpringBoot应用
*/
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class,args);
}
}
5.编写Controller
@ResponseBody
@Controller
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "Hello SpringBoot";
}
}
6.运行主程序
现在没有tomcat了我们怎么让程序跑起来呢?我们前面说了,SpringBoot有内嵌的Tomcat,因此我们直接运行主程序就好了
这样就是成功的了。
我们来访问一下这个路径,发现就是我们想要的结果
7.打成jar包部署
在pom.xml中加入
<!--这个插件,可以将应用打包成一个可执行的jar包-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
运行打包
可以看到路径
复制一份放在任意盘,运行命令
可以看到运行成功了
试试访问?一样的结果