Spring Boot的基本概念
首先
你好。
由于这次我从头开始学习了SpringBoot,所以我尽量将我学到的知识简明扼要地总结了一下。
这篇文章不会详细解释具体的实施方法,所以希望那些想要初步了解Spring Boot是什么的朋友能够充分利用。
这篇文章的目标读者
・对于刚开始学习Spring Boot的人
・对于想要了解Spring Boot的本质是什么的人
・对于理解Java概述的人
在这篇文章中所要传达的信息
・Spring Boot是什么?
・Spring Boot的特点(依赖注入(DI)和面向切面编程(AOP))
什么是Spring Boot?
首先,我們將談論一下Spring Boot,以及它是如何與Spring Framework相關聯的。
Spring Framework是什么?
在Java开发中可使用的框架集合
Spring Framework为了提高开发效率提供了各种功能,每个功能都有相应的框架。因此可以根据所要实现的系统选择使用的框架。
※「框架」是指为了简化开发而存在的”骨架”。
通过使用框架,无需从零开始编写所有程序,可以提高开发效率。
Spring Boot是什么?
这是Spring Framework中的一个框架,旨在使Spring Framework的功能更易于使用的框架。
![Spring全体像.png](https://cdn.silicloud.com/blog-img/blog/img/657d3b8537434c4406c81999/15-0.png)
由于Spring Framework提供了各种不同的框架,因此在使用这些框架时需要准备XML文件等,导致环境设置变得复杂化。
![springframework違い.png](https://cdn.silicloud.com/blog-img/blog/img/657d3b8537434c4406c81999/17-0.png)
SpringBoot项目的启动方法
以下是使用eclipse(Pleiades ALL in One)创建Spring Boot项目的简单说明。
![操作1.png](https://cdn.silicloud.com/blog-img/blog/img/657d3b8537434c4406c81999/20-0.png)
![操作2.png](https://cdn.silicloud.com/blog-img/blog/img/657d3b8537434c4406c81999/21-0.png)
![操作3.png](https://cdn.silicloud.com/blog-img/blog/img/657d3b8537434c4406c81999/22-0.png)
![操作4.png](https://cdn.silicloud.com/blog-img/blog/img/657d3b8537434c4406c81999/23-0.png)
![操作5.png](https://cdn.silicloud.com/blog-img/blog/img/657d3b8537434c4406c81999/24-0.png)
SpringBoot 的特点
下面将对SpringBoot(实际上是指Spring Framework)的核心功能“DI”和“AOP”进行解释。
总结来说,这两个功能都是为了“提高系统的开发效率和可维护性”。
DI。
「依赖注入」是“Dependency Injection”的缩写,翻译为“依赖性的注入”。
“依赖注入容器”负责实现这个功能。
“依赖性”是什么意思?
「依赖关系」是指一个类(即使用者)利用另一个类(即被使用者)的行为。
Java有以下两种类型的依赖关系。
在这两种依赖关系中,如果“被使用的类”发生变化,就需要修正“使用的类”。
1. 依赖于班级
在「使用类」中实例化「被使用类」并调用方法。
![クラス依存.png](https://cdn.silicloud.com/blog-img/blog/img/657d3b8537434c4406c81999/34-0.png)
2. 接口依存
在使用类中,使用接口类型实例化被使用类,并调用其方法。
![インターフェース依存.png](https://cdn.silicloud.com/blog-img/blog/img/657d3b8537434c4406c81999/37-0.png)
在Java中有两种依赖,”接口依赖”相比”类依赖”修正的地方较少,具有实现”低依赖”状态的优点。
然而,即使在“接口依赖”情况下,也需要对“使用方类”进行修改,并且在存在多个“使用方类”的情况下,可能会出现修改遗漏的可能性。解决这个问题的功能是依赖注入(DI)。
DI容器的作用
通过使用DI容器,可以实例化“被使用的类”并将其注入到“使用的类”中。
在“类依赖”和“接口依赖”方面,实例化是通过使用new关键字在“使用的类”中进行的,但是DI容器可以代替这个实例化过程。
生成的实例被称为“Bean”。
![DIコンテナ.png](https://cdn.silicloud.com/blog-img/blog/img/657d3b8537434c4406c81999/42-0.png)
DI程序的执行
请在DI容器中生成实例,并通过给它以下的”注解”来使用该实例。
①给被使用的类添加”@Component”注解
※”@Controller”、”@Service”、”@Repository”也是用于生成实例的注解。
②在使用的类中声明一个字段来接收实例的引用,并在字段上添加”@Autowired”注解。
Spring Boot在启动时会查找被注解为”@Component”的类,并对其进行实例化。然后将这些实例注册到DI容器中,并注入到被注解为”@Autowired”的位置。
![DI実装1.png](https://cdn.silicloud.com/blog-img/blog/img/657d3b8537434c4406c81999/47-0.png)
DI的优点
![DI実装.png](https://cdn.silicloud.com/blog-img/blog/img/657d3b8537434c4406c81999/49-0.png)
按面向方面编程(Aspect-Oriented Programming,简称AOP)
「Aspect Oriented Programming」的缩写,翻译为「面向切面编程」。
「面向对象编程」是什么?
面向对象编程,简单来说就是一种“将共享的处理分离出来并进行统一管理的机制”的概念。
![AOP概要.png](https://cdn.silicloud.com/blog-img/blog/img/657d3b8537434c4406c81999/54-0.png)
「横断的关注点」指的是不是功能的主要部分,但从质量和维护的角度来看,却是必需的内容。它涉及到数据库连接后的异常处理和日志输出处理等。
将「中心关注点」和「横断关注点」总结在一起描述时,存在以下这些缺点。
-
- 処理が増えることでソースが読みづらくなる
- 処理を入れ忘れる可能性がある
为了阻止这种情况发生,AOP的功能是将”核心关注点”和”横切关注点”分开,并统一管理”横切关注点”。
![AOPイメージ.png](https://cdn.silicloud.com/blog-img/blog/img/657d3b8537434c4406c81999/59-0.png)
AOP实现的方法
在了解AOP之前,需要先介紹一些必須了解的術語。
※メソッドの実行前・実行後などを指定できるPointCutAdviceを実行する場所(クラスやメソッド)
※「メソッド名がgetで始まるもの」といった条件を指定できる
![AOP実装.png](https://cdn.silicloud.com/blog-img/blog/img/657d3b8537434c4406c81999/63-0.png)
@Before(“execution(* com.example.Controller.get*(..))”)
在`com.example.Controller`类下,执行在以`get`开头的方法之前。
AOP的好处是什么?
![AOPメリット.png](https://cdn.silicloud.com/blog-img/blog/img/657d3b8537434c4406c81999/67-0.png)
文献引用
-
- Spring解体新書第2版
- Spring Framework超入門 優しくわかるWebアプリ開発