YouTube播放列表下方是一个很好的起点。
什么是春天?
Spring是一个开源Java平台,使能够编写可维护和可扩展的Java应用程序。
我们的含义是什么?
Spring是Java应用程序的完整生态系统。这不是一个项目,而是春季保护下的各种项目的集合,每个项目都集中在Java开发的某个方面。
现代Java的开发非常依赖春季项目,以至于很难考虑非弹簧应用程序。
在哪里可以找到有关春季的信息?
我们可以在这里找到有关春天的一切 - https://spring.io/
什么是春季项目?
每个春季项目本身就是一个框架,可帮助开发人员开发某种类型的Java应用程序。例如,如果您想开发一个Web应用程序,则有一个春季项目。
我在哪里可以找到这些项目?
您可以在这里找到所有项目https://spring.io/projects/
另一个观点是https://spring.io/projects/spring-boot
什么是春季框架?
虽然有很多项目,但一切的核心都是弹簧核心又称弹簧框架,它提供了依赖性注入功能。
依赖注射(DI)和控制反转(IOC)
在Java项目中,我们通常编写类,定义其依赖关系并在需要时创建对象。如果A类想要使用B类,那么我们要做类似的事情:
public class A {
public void something() {
B = new B(); //creating the object manually using new keyword
B.dosomething();
}
}
在简而
Spring使用DI 在需要的地方注入依赖项,而不是使用新关键字手动创建对象。弹簧可以使用以下两种方法注入依赖项:
-
构造函数注入
-
设置器注入
当我们使用弹簧时,控件会倒置,这意味着我们告诉春季对象的依赖关系,春季的工作是创建对象并适当地注入这些依赖项,这就是为什么该原理称为控制的倒置(IOC)。
class A {
private B b; //A is dependent on B
//Spring will call this constructor to pass an object of B
public A(B b) {
this.b = b;
}
}
春天怎么知道该怎么办?
春天本身对该项目一无所知。我们需要将一些信息传递给框架。
我们提供配置元数据,即有关正在管理的类,其依赖性(他们重新依赖的类)的详细信息。然后,春季读取该配置,初始化了它的IOC容器并准备系统。
我如何开始?
您需要首先设置一个具有正确Maven依赖项的Java项目。
一旦设置了项目,我们就可以从弹簧代码开始。
我们知道,我们需要向IOC容器提供配置元数据。为此,我们将使用 @configuration注释。
这是一个级别的注释。我们创建一个类,用@configuration注释它,然后将此类传递给IOC容器。
在服务器启动时,Spring将扫描此类以阅读元数据并找到有关其需要管理的类的更多详细信息。
我们希望弹簧管理的类称为** bean。 **您可以说这只是课堂的另一个名称。弹簧豆是指春天知道的Java类。
观看此视频,我们在其中使用了注释。
@Bean替代方案
@bean并不是将Java类配置为弹簧bean的唯一方法。还有其他方法可以做到这一点。很少有可以做同样事情的注释如下:
@component,@service, @repository与@componentscan
这些用动手实践详细说明:
豆类范围
在由弹簧(即IOC容器)管理时,每个bean都有一定的范围,该范围基本上定义了对象的范围。
bean可以具有不同的范围,例如:
-
singleton
-
原型
-
请求
-
session
-
应用程序
singleton表示IOC容器将创建一个bean的单个对象,因此每次您向Spring容器询问Classa的对象时,每次都会使用相同的对象。这类似于四个单身设计模式的帮派,其范围是由IOC容器保证的。您仍然可以使用 new 关键字来创建一个新对象。
正好相反的是原型范围,这意味着每次都有一个新对象。
在这里,我们详细讨论了这一切:
懒惰而渴望的初始化
它解释了何时将bean初始化,而bean的新对象是由弹簧容器创建的。
,如果您查看实际细节时,您会浏览此视频更有意义:
@postConstruct和@dependson
在继续懒惰和急切的初始化时,我们还应该了解豆的生命周期以及豆子如何相互依赖。实际上,我们必须相应地识别和设置bean,因为过时的初始化可能会崩溃。
自动
自动启动是弹簧容器识别对象依赖性并在需要时将它们连接在一起的过程。
例如,如果我们配置了classa需要一个classb的对象,这意味着classB是Classa的依赖性,因此IOC容器将创建ClassA和ClassB的对象,并将ClassB的对象自动注入classB的对象。
@autowired注释简化了可以在变量声明,构造函数和二传剂方法上使用的自动化过程。
自动引导在此处以很棒的详细信息进行了解释: