说说Spring boot那些事

Posted 晓晨说IT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了说说Spring boot那些事相关的知识,希望对你有一定的参考价值。

Spring Boot 初识

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。它有以下优势:

     1. 创建独立的Spring应用程序

     2. 嵌入的Tomcat,无需部署WAR文件

     3. 简化Maven配置

     4. 自动配置Spring

     5. 提供生产就绪型功能,如指标,健康检查和外部配置

     6. 绝对没有代码生成并且对XML也没有配置要求 

说说Spring boot那些事

Spring Boot与Spring Cloud的区别

有些童鞋刚接触这块 ,理解不是很深刻会经常问道这样类似的问题,下面我就简单讲解一下Spring boot与Spring cloud 之间的关系!

说说Spring boot那些事

Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务,Spring Boot,看名字就知道是Spring的引导,就是用于启动Spring的,使得Spring的学习和使用变得快速无痛。不仅适合替换原有的工程结构,更适合微服务开发。

Spring Cloud基于Spring Boot,为微服务体系开发中的架构问题,提供了一整套的解决方案——服务注册与发现,服务消费,服务保护与熔断,网关,分布式调用追踪,分布式配置管理等。

Spring Cloud是一个基于Spring Boot实现的云应用开发工具;Spring boot专注于快速、方便集成的单个个体,Spring Cloud是关注全局的服务治理框架;spring boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring boot来实现。

学过Spring的都知道,Spring开发有非常头疼的三点:

以启动一个带Hibernate的Spring MVC为例。
1. 依赖太多了,而且要注意版本兼容。这个应用,要添加10-20个依赖,Spring相关的包10多个,然后是Hibernate包,Spring与Hibernate整合包,日志包,json包一堆,而且要注意版本兼容性。

2. 配置太多了,要配置注解驱动,要配置数据库连接池,要配置Hibernate,要配置事务管理器,要配置Spring MVC的资源映射,要在web.xml中配置启动Spring和Spring MVC等

3.部署和运行麻烦。要部署到tomcat里面。不能直接用java命令运行。

太多重复和大家都一样的配置了。

Spring Boot的哲学就是约定大于配置。既然很多东西都是一样的,为什么还要去配置。

1. 通过starter和依赖管理解决依赖问题。
2. 通过自动配置,解决配置复杂问题。
3. 通过内嵌web容器,由应用启动tomcat,而不是tomcat启动应用,来解决部署运行问题。

Spring Cloud体系就比较复杂了。基本可以理解为通过Spring Boot的三大魔法,将各种组件整合在一起,非常简单易用。

说说Spring boot那些事

你可以把spring boot的官方的包分为两类,一种是为了搭建一个服务用的,比如hibernate jpa,比如 message。另外一种含有cloud关键字的,是为了各个spring boot之前管理和使用的包。

因为当把集群、CI等方法集中进来一起考虑的时候,这件事情就复杂了。

多个小有服务整合成的大服务,要有一个消息总线来用于互相通知和调用,要有一个服务发现程序来管理某个小服务上线可用,同时在服务离线时也要能处理,各个小服务要尽量各自独立,还要考虑服务的依赖性,集群的负载均衡,配置文件的分离。

再把CI和Docker拿进来一起考虑的话,更乱。

但我认为这样完成的一个服务是更具有可插拔性,更容易维护的。而且遵循了上面的cloud方案的话,在服务的健壮性上面也很强。

写到这里对于新接触的我认为可以先从单独的spring boot程序开始入门,当要添加一个新功能时,考虑拆分成另外服务。两个程序间可以通过 jmx或是 其它消息中间件或是rest通讯。最后实现了一个各自独立的功能集群。

总结一句:Spring boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring boot,属于依赖的关系。

说说Spring boot那些事

从零开始搭建Spring Boot

1.从官网下载Spring Boot的demo(zip文件)网址:https://start.spring.io/

2.在src/main/java/com/example/demo目录下新建类Greeting.java

说说Spring boot那些事

3.src/main/java/com/example/demo目录下新建类GreetingController.java

说说Spring boot那些事

4.src/main/java/com/example/demo目录下新建类DemoApplication.java

说说Spring boot那些事

5.进入DemoApplication.java启动该项目

说说Spring boot那些事

6.访问http://localhost:8080/greeting,你将会看到你想要的结果

如果项目启动出错,试试加上以下依赖

以下为一些源码:

package hello;public class Greeting {

private final long id;
private final String content;

public Greeting(long id, String content) {
this.id = id;
this.content = content;
}

public long getId() {
return id;
}

public String getContent() {
return content;
}}


package hello;

import java.util.concurrent.atomic.AtomicLong;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class GreetingController {


private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();

@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
return new Greeting(counter.incrementAndGet(),
String.format(template, name));
}}

package hello;import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class Application {


public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}}

到此一个简单的Spring Boot框架的demo就完成了,千里之行,始于足下,赶紧动手试试吧!

以上是关于说说Spring boot那些事的主要内容,如果未能解决你的问题,请参考以下文章

spring boot到底帮我们做了那些事?

关于Boot应用中集成Spring Security你必须了解的那些事

说说代码质量代码安全和软件测试那些事

基础篇-SpringBoot那些事

说说JavaScript那些事

说说null和undefined的那些事