01-Spring Boot简介及快速构建

一、简介

SpringBoot它基于Spring4.0设计,是由Pivotal公司提供的框架。SpringBoot纯注解的方式进行开发。

Spring发展史:Rod Johnson 2003 Interface Spring。

2004 开源 Spring Source

2008年收购Tomcat Aatch Servlet 整个生态掌握自己手里

2009 Spring VMware 4.6亿美金 收购了

先后收购RabbitMq、redis

Vmware EMC 通用电器 合资成立 Pivotal

2014年 Spring Boot

2015年 Spring Cloud(微服务)

2018年 敲钟上市

2014年4月发布Spring Boot1.0 (Spring4.0) 2018年3月Spring Boot2.0(Spring5.0)发布

SpringBoot基于Spring开发,不仅继承了Spring框架拥有的优秀特性,它并不是用来代替Spring的解决方案,而和Spring框架紧密结合进一步简化了Spring应用的整个搭建和开发过程。其设计目的是用来简化Spring应用的初始搭建以及开发过程。就是通过提供默认配置等方式让我们更容易使用。约定大于配置 开箱即用

大部分的spring boot应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑,另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。

简化Spring应用开发的一个框架;

对整个企业级开发技术栈的一个大整合build anything;

J2EE开发的一站式解决方式。

优点:

快速构建一个独立的Spring应用程序;

嵌入的Tomcat、Jetty或者Undertow,无需部署WAR文件;(只需将项目打包成一个jar包,java-jar 可以直接部署一个项目上线。)

提供starter POMs来简化Maven配置和减少版本冲突所带来的问题;

对Spring和第三方库提供给默认配置,也可以修改默认值,简化框架配置;

提供生产就绪功能,如指标、健康检查和外部部署;

无需配置XML---javaConfig,无代码生成,开箱即用。

二、Why SpringBoot

SpringBoot简化了基于Spring开发,这只是最直观的一方面;还有一个方面:更得力于各微服务组件的支持,这也是谈SpringBoot必谈微服务的原因。(起初是Netflix移植到Spring),也可以说是Spring Cloud带动了SpringBoot,SpringBoot成就了SpringCloud。SpringBoot和微服务的火热程度是同步的。

单体应用,就是大名鼎鼎的 all in one 的风格。这种风格把所有的东西都写在一个应用里面,比如我们熟悉的OA、CRM、ERP系统。所有的页面、所有的代码都放在一起,打成一个war包,然后把war包放在Tomcat容器中运行。容易牵一发而动全身。

一个微服务架构把每个功能元素放进一个独立的服务中,并且通过跨服务器分发这些服务进行扩展,只在需要时才复制。

三、快速开始 SpringBoot Hello World

前置知识要求; spring.io

SSM框架的使用经验

熟练使用Maven进行项目构建和依赖管理

熟练使用idea

@ResponseBody注解:将控制器(Controller)方法返回的Java对象,自动转换成JSON/XML等格式,并直接写入HTTP响应体(Response Body)中,而不是跳转到一个视图(JSP/Thymeleaf)页面。

JSON:JavaScript Object Notation(符号)(JavaScript对象表示法)。"轻量级的数据交换格式",一种通用的"数据快递盒"。json的数据结构主要有两种形态,并且这两种形态可以互相嵌套:

形态一:对象(用{}花括号包裹)---相当于Java里的Map或User对象

复制代码
{
  "name": "张三",
  "age": 18,
  "isStudent": false
}

形态二:数组(用\[\]方括号包裹)---相当于Java里的List

复制代码
[
  "苹果", "香蕉", "橘子"
]

最常用的复杂结构(对象里面套数组,数组里套对象):

复制代码
{
  "code": 200,
  "message": "查询成功",
  "data": [
    {"id": 1, "name": "Alice"},
    {"id": 2, "name": "Bob"}
  ]
}

项目打包部署:

将项目打包成jar包 jar包里面套jar包---Fat Jar

版本依赖

启动类

四、自定义SpringApplication

Spring的三大核心机制

1.IoC(控制反转)对象不由你创建,由Spring管。解耦,降低代码之间的依赖。

2.DI(依赖注入)依赖不由你组装,由Spring塞。自动装配,省去手动new的麻烦

3.AOP(面向切面编程)横切逻辑不用你写,由Spring插。抽离通用功能(日志、事务等)

Spring中的Bean

在Spring框架中,Bean就是由Spring IoC容器所管理、实例化、组装和配置的对象。它是构成应用程序主干的"零件",理解Bean是使用Spring框架的基石。Bean就是由Spring容器来创建和管理的Java对象。你不需要自己new,Spring会帮你做好一切。

复制代码
@Service  // 告诉Spring:把这个类变成一个Bean
public class UserService {
    @Autowired  // 告诉Spring:帮我把这个依赖塞进来
    private UserDao userDao;
}

实例化,自定义