Spring Boot学习路线1

小万哥
• 阅读 91

Spring Boot是什么?

Spring Boot是基于Spring Framework构建应用程序的框架,Spring Framework是一个广泛使用的用于构建基于Java的企业应用程序的开源框架。Spring Boot旨在使创建独立的、生产级别的Spring应用程序变得容易,您可以"只是运行"这些应用程序。

术语

Spring Core是Spring Framework的基础,为基于Java的应用程序提供了全面的编程和配置模型。这里是与Spring Core相关的一些关键术语和概念:

  • Bean:在Spring中,“bean”是由Spring容器管理的Java对象。通常使用配置元数据来定义bean,可以在XML、Java注释或Java代码中指定。
  • 控制反转(IoC):Spring的主要原则之一是控制反转(IoC),这意味着Spring容器负责管理bean的生命周期并注入其依赖项。
  • 依赖注入(DI):Spring使用依赖注入(DI)来管理bean之间的依赖关系。在DI中,对象的依赖项由容器提供,而不是对象自己创建或查找其自己的依赖项。
  • 容器:Spring容器是Spring Framework的核心部分,它创建和管理bean及其依赖项。
  • ApplicationContext:ApplicationContext是Spring容器的实现。它负责加载和管理配置元数据,并创建在该元数据中定义的bean。
  • 面向切面编程(AOP):Spring支持面向切面编程(AOP),允许您将横切关注点(例如日志记录或安全性)与应用程序的业务逻辑分离。
  • 事件:Spring提供了一种事件模型,允许bean发送和接收事件。这用于将bean彼此解耦,使应用程序更松散耦合。
  • ApplicationEvent和监听器:Spring支持发布订阅模型来处理事件,ApplicationEvent定义事件对象,监听器是实现ApplicationListener接口的类,监听特定事件并采取必要的操作。
  • 数据访问:Spring使用各种框架(如JDBC、Hibernate、JPA)提供了一致的高级数据访问抽象。
  • 事务:Spring提供了一种灵活、一致且易于声明式地使用不同底层技术(如JPA、JDBC和Hibernate)管理事务的方法。
  • 任务执行和调度:Spring提供了TaskExecutor和TaskScheduler,提供了一种方便的方式来并发运行任务,在计划的基础上或异步运行。

架构

Spring Boot采用分层架构,每个层次与其直接上层或下层(分层结构)通信。 Spring Boot的四个层如下:

  • 表现层:处理HTTP请求,将JSON参数转换为对象,并对请求进行身份验证并将其传输到业务层。
  • 业务层:业务层处理所有业务逻辑。 它由服务类组成,并使用数据访问层提供的服务。 它还执行授权和验证。
  • 持久层:持久层包含所有存储逻辑,并将业务对象从数据库行翻译成翻译。
  • 数据库层:在数据库层中执行CRUD(创建,检索,更新,删除)操作。

为什么选Spring Boot?

Spring Boot提供了许多功能,使创建基于Spring的应用程序变得更加容易,包括:

  • 嵌入式应用服务器
  • 自动配置
  • 预配置的启动器
  • 方便的打包和分发
  • 通过内置的健康检查端点和能够自定义管理端点来方便监控。

此外,它还内置了许多最佳实践和公约,这减少了开发人员需要编写的工作量和样板代码。

Spring是一个开源框架,为现代基于Java的企业应用程序提供了全面的编程和配置模型。Spring的核心模块,也称为“Spring Core”模块,是框架的核心,为依赖注入(DI)和控制反转(IoC)提供了基本功能。除了依赖注入外,Spring Core模块还提供了其他几个功能,例如:

  • 灵活可扩展的验证框架
  • 类型转换系统
  • 一致的消息框架

配置

Spring核心配置是配置Spring框架的过程,它涉及指定应用程序正常运行所需的各种配置细节。这可以包括设置bean、指定bean依赖项、配置面向方面编程(AOP)方面等。配置可以通过Java代码、XML文件或使用代码中的注释来完成。

请通过以下链接了解有关Spring Core配置的更多信息:

依赖注入

Spring Boot使用Spring框架的控制反转(IoC)容器来管理对象及其依赖关系。IoC容器负责创建对象、将它们连接起来并管理它们的生命周期。当创建一个对象时,它的依赖关系也会被创建并注入到该对象中。

Spring IOC

控制反转(IoC)是一种设计模式,通常与依赖注入(DI)模式一起使用。 IoC的基本思想是反转程序的控制流,使得对象自己控制逻辑流程和其他对象的创建,而不是程序控制逻辑流程和对象的创建。

Spring是一个流行的Java框架,使用IoC和DI提供更灵活,模块化的软件开发方法。 Spring IoC容器负责管理Spring应用程序中对象的创建和配置。

Spring IoC容器创建对象,将它们连接在一起,对它们进行配置,并管理它们从创建到销毁的完整生命周期。这减轻了应用程序代码实例化和配置对象的负担,并允许应用程序代码专注于业务逻辑而不是基础设施问题。

Spring IoC容器提供两种配置对象的方法:

  • 基于XML的配置
  • 基于注释的配置

在基于XML的配置中,您使用XML文件描述配置元数据,容器创建对象并将它们连接在一起。

在基于注释的配置中,您在Java源代码中使用注释描述配置元数据,容器创建对象并将其连接在一起。

无论哪种方式,Spring IoC容器都可以用于在Spring应用程序中创建,管理和连接对象,使用各种不同的策略,包括构造函数注入,设置器注入和接口注入。

总体而言,Spring IoC容器提供了一个集中管理应用程序中对象的生命周期和配置的位置,使得开发,测试和维护代码更加容易。

Sprint AOP

Spring AOP(面向切面编程)是Spring框架的一个特性,允许开发人员定义跨多个类的某些行为(即“方面”),例如日志记录或事务管理。这些行为被称为“通知”,可以应用于应用程序中的特定“连接点”(即程序执行中的点),使用“切入点”确定应该应用通知的位置。

Spring AOP允许开发人员将这些横切关注点的实现与应用程序的业务逻辑分开,使代码更模块化且更易于理解。这也可以使应用程序更加灵活,因为可以将相同的通知应用于代码的不同部分,而无需复制通知本身的代码。

Spring MVC

Spring MVC是一个用于在Java中构建Web应用程序的框架。它是Spring Framework的一部分,后者是构建Java应用程序的更大生态系统。Spring MVC建立在Model-View-Controller(MVC)设计模式之上,有助于将应用程序的关注点分为三个不同的组件:模型、视图和控制器。

Spring MVC提供了一种强大而灵活的构建Web应用程序的方式,并与Spring生态系统的其他部分(例如Spring Security用于身份验证和授权,以及Spring Data用于数据访问)很好地集成。

注解

Spring Boot 的一个关键特性是使用注解来配置应用程序的各个方面并启用某些功能。

Spring Boot 中最常用的注解包括:

  • @SpringBootApplication
  • @RestController
  • @Autowired
  • @Value
  • @Enable
  • @Configuration
  • @Bean

这些只是 Spring Boot 中可用的众多注解的几个示例。 还有许多其他注解可用于配置应用程序的各个方面,例如安全性、缓存和数据访问。

Spring Bean Scope

在Spring框架中,Bean是由Spring IoC容器实例化、组装和管理的对象。Spring容器的一个关键特性是它能够管理Bean的生命周期,包括根据需要创建、配置和销毁Bean。容器控制Bean生命周期的一种方式是指定其作用域。

Bean的作用域确定了Bean在容器内和应用程序中其他对象中的生命周期和可见性。Spring提供了多种不同的Bean作用域,包括:

  • singleton:这是Bean的默认作用域。单例Bean只由容器实例化一次,并由请求它的所有对象共享。
  • prototype:这个作用域意味着容器每次请求时都创建一个Bean的新实例。
  • request:这个作用域仅适用于Web应用程序,表示容器为每个HTTP请求创建一个Bean的新实例。
  • session:类似于请求作用域,但Bean的实例是为每个HTTP会话创建的。
  • application:这个作用域是用于全局应用程序级别的数据,只在支持Web的Spring ApplicationContext中有效。
  • websocket:这个作用域是用于全局WebSocket级别的数据,也只在支持Web的Spring ApplicationContext中有效。

可以使用Bean元素的scope属性在配置文件中指定Bean的作用域。

选择正确的Bean作用域非常重要,因为它可能会影响应用程序的行为和性能。

以下是关于 Spring Core 的相关链接,您可以了解更多:

最后

为了方便其他设备和平台的小伙伴观看往期文章,链接奉上:

公众号搜索Let us Coding知乎开源中国CSDN思否掘金InfoQ简书博客园慕课51CTOhelloworld腾讯开发者社区阿里开发者社区

看完如果觉得有帮助,欢迎点赞、收藏关注

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
PPDB:今晚老齐直播
【今晚老齐直播】今晚(本周三晚)20:0021:00小白开始“用”飞桨(https://www.oschina.net/action/visit/ad?id1185)由PPDE(飞桨(https://www.oschina.net/action/visit/ad?id1185)开发者专家计划)成员老齐,为深度学习小白指点迷津。
Stella981 Stella981
2年前
List的Select 和Select().tolist()
List<PersondelpnewList<Person{newPerson{Id1,Name"小明1",Age11,Sign0},newPerson{Id2,Name"小明2",Age12,
Wesley13 Wesley13
2年前
VBox 启动虚拟机失败
在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern
Wesley13 Wesley13
2年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
2年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Stella981 Stella981
2年前
JavaScript常用函数
1\.字符串长度截取functioncutstr(str,len){vartemp,icount0,patrn/^\x00\xff/,strre"";for(vari
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_