欢迎光临Spring Boot时代(一)1

简介: 欢迎光临Spring Boot时代(一)1

前言

在当今的Java领域,Spring Boot是十分流行的,因为用它开发确实非常快更简单,有人甚至说可以不用学Spring,直接学Spring Boot,但是Spring Boot的底层还是Spring Framework,只不过是在Spring Framework的基础上进行了一层封装而已(以我目前的水平看是这样的),不学 Spring,直接学Spring Boot,在我看来就像是建楼不建地基,直接从第二层开始建一样。所以我希望你在看本篇之前,希望你对Spring Framework已经有一定了解了,那么怎么确认是否达到这个标准呢? 可以参看我这篇博客: 欢迎光临Spring时代(一) 上柱国IOC列传。如果这篇博客的东西你都掌握了,基本上这篇博客讲的就可以基本看懂了。

这些做的练习我都放在码云上了,有时间会在GitHub上也放一份, 地址如下:

简介

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run".如果你想创建基于Spring的单体应用,且是生产级别的,选取Spring Boot吧,它非常简单,简单到你好像不用写代码,只用运行就可以了。We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need minimal Spring configuration.老实说这句话我一直在究竟怎么翻译,我的第一个理解是我们为Spring 平台和第三方库设计了一个视图,能够开发者最快的开始开发,绝大部分Spring Boot程序需要的配置很少。第二个理解就我们重新审视了Spring 平台和第三方库之间的关系设计了Spring Boot框架,Spring Boot能够让开发者快速的开发,绝大部分Spring Boot 程序需要的配置文件都很少。反正两个理解相近都是在说能够让开发者快速上市,而且配置文件很少。有英语好的同学,可以在下方留言。

上面所说的视图就是我理解就是这个东西: image.png

特点

  • Create stand-alone Spring applications

创建单体Spring 程序

  • Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)

内置Tomcat、Jetty、Undertow等应用服务器(可以自己选择)

  • Provide opinionated 'starter' dependencies to simplify your build configuration (提供starter依赖集供你选择让你的pom文件更小一点)
  • Automatically configure Spring and 3rd party libraries whenever possible

尽可能的自动配置Spring和第三方库

  • Provide production-ready features such as metrics, health checks, and externalized configuration

提供一个可随时上生产环境的特性,就像一个度量仪,用于健康监测和扩展配置。 这个应该说的是Spring Boot admin,监控应用的运行状况

  • Absolutely no code generation and no requirement for XML configuration

完全没有衍生代码和xml配置文件 可能到这里你还是有些晕哈,什么是starter,什么是自动配置,没配置XMl配置文件,数据库信息我还怎么配置? 不要着急,慢慢跟着我的思路走,下面会一一讲清楚这些名词。

Spring Boot与Spring Cloud

Spring Boot似乎与微服务的概念缠绕在一起,是不是Spring Boot就是用来做微服务的呢? 写到这里,可能还会有同学会问,什么是微服务? 简单的说,微服务是一种软件架构,那什么是软件架构? 请参看我这篇文章:

如果你常看我的文章,会发现我的文章基本上是一环扣一环的,是一个有序的系统。

那Spring Cloud是什么?

Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systemsSpring Cloud 为开发人员提供了一系列工具集来解决在构建分布式系统中遇到的一些通用问题。 原来是个工具集啊,看起来跟微服务也没关系啊。不要着急,我们在Spring官网再仔细找找。

Microservice architectures are the ‘new normal’. Building small, self-contained, ready to run applications can bring great flexibility and added resilience to your code. Spring Boot’s many purpose-built features make it easy to build and run your microservices in production at scale. 微服务架构正在成为新常态,组建一个个微小的、包含容器的、运行起来简单的能够给你的系统带来高灵活性和强扩展性。 Spring Boot的许多构建特性能够让开发者在大型项目中组建和部署微服务简单起来。

And don’t forget, no microservice architecture is complete without Spring Cloud ‒ easing administration and boosting your fault-tolerance. 但是不要忘了,在Java领域,没有Spring Cloud的任何微服务架构都是不完整的,因为缺少容错能力和管理麻烦。

所以Spring Boot和Spring Cloud是可以用来组建微服务,实现微服务架构的。Spring Boot用来做开发服务,只是加快你开发Spring 应用程序的速度,不一定非得用来做微服务。Spring Cloud用来做服务治理和Spring Boot能够做到无缝集成。 到此两者的关系应该讲清楚了。

如何创建一个Spring Boot工程

版本号选讲

数字版本号参看知乎的这个问题:  软件的版本号是如何确定的?直接想看官方约定的,请去这个网址: semver.org/lang/zh-CN/这里讲的是英文大版本号,像GA之类的:

  • GA

General Availability,正式发布的版本,官方开始推荐广泛使用,国外有的用GA来表示release版本。

  • RELEASE

正式发布版,官方推荐使用的版本,有的用GA来表示。比如spring。

  • Stable

稳定版,开源软件有的会用stable来表示正式发布的版本。比如Nginx。

  • Final

最终版,也是正式发布版的一种表示方法。比如Hibernate。

  • RC

Release Candidate,发行候选版本,基本不再加入新的功能,主要修复bug。是最终发布成正式版的前一个版本,将bug修改完就可以发布成正式版了。

  • alpha

α是希腊字母的第一个,表示最早的版本,内部测试版,一般不向外部发布,bug会比较多,功能也不全,一般只有测试人员使用。 Beta β是希腊字母的第二个,公开测试版,比alpha版本晚些,主要会有“粉丝用户”测试使用,该版本仍然存在很多bug,但比alpha版本稳定一些。这个阶段版本还会不断增加新功能。分为Beta1、Beta2等,直到逐渐稳定下来进入RC版本。 我们介绍的是常见的,然后还有一些,如果还想了解请参看后文的参考资料中的文章。

方式一: Spring Initializr

image.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.png

不用配置Tomcat,直接运行我们看下效果:image.png然后我们写个Controller试试看:image.png代码如下:

RestController
public class HelloWorld {
    @GetMapping(value = "/hello")
    public String test() {
        return "hello";
    }
}
复制代码

输入url: http://localhost:8080/hello结果: 下面会讲什么不用之前那么一堆,就能直接编写Controller。

方式二: 直接引入依赖

  1. 新建一个maven工程,如果你不懂maven,请参看: Maven学习笔记
  2. image.png
  3. image.png
  4. 2.3.9的Spring Boot将对应starter的pom展示移除了,如果你想复制的话,可以进入这个网址:

docs.spring.io/spring-boot…

试了好几次,访问pom是进入GitHub,但是总是失败。Spring Boot 的starter依赖总是以spring-boot-starter开头,我们不用写版本号,因为继承了父依赖。我们直接这么写就行了:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
复制代码

然后建一个包和类:image.png

@SpringBootApplication
public class StudySpringBoot {
    public static void main(String[] args) {
        SpringApplication.run(StudySpringBoot.class, args);
    }
}
复制代码

运行结果:image.png同样的控制器代码:

image.png

同样的运行结果:image.png

相关文章
|
9天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
21 2
|
1月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
54 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
1月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
62 2
|
5月前
|
运维 Java 关系型数据库
Spring运维之boot项目bean属性的绑定读取与校验
Spring运维之boot项目bean属性的绑定读取与校验
54 2
|
5月前
|
存储 运维 Java
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
63 2
|
5月前
|
Java Maven
springboot项目打jar包后,如何部署到服务器
springboot项目打jar包后,如何部署到服务器
433 1
|
5月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
55 1
|
5月前
springboot2.4.5使用pagehelper分页插件
springboot2.4.5使用pagehelper分页插件
156 0
|
5月前
|
缓存 运维 Java
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
49 0
|
6月前
|
安全 Java 应用服务中间件
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
69 0
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
下一篇
无影云桌面