春季容器:在理解弹簧框架的操作时,我认为至关重要
#java #spring #springboot #ioc

您是否学习或与Java一起工作?您使用春季框架吗?您是否了解春季的工作原理以及如何将所有东西连接到方便的布上?如果您理解,也许这篇文章不会带给您任何新闻。即使这样,您也可以使用它来记住一些事情,并纠正我,如果我写了任何胡说八道。

我决定写这篇文章,因为我注意到许多人使用春季,并且不太了解它的工作原理。甚至,他通过在这里和那里阅读来学习,花时间花时间才有意义。很难找到更多编译的东西,即IT组解释和概念与之相关并且非常重要。

打断了这一点,我们跟随!您对Java对象的指导记得或了解什么?如果您知道如何将类与对象区分开来,那么您就会了解它是什么以及Heranet,多态性和接口的工作方式!轰动如果您不知道,我建议您在继续阅读之前尝试理解这些内容。 PORD,我决定撰写本文,简要审查是什么是什么以及多态性的起作用。因为我发现了解前进的一切都是一个基本的概念。

物体方向内的多态性是什么?让我们立即使用示例:想象我们有一个应用程序,任何人都会注册新客户,最初是不活动的。可以注册启用它,并且此激活通过电子邮件发射通知。这样的基本实现将如下:

Image description

功能胚胎,很酷。现在,在激活后,风景已经改变,需要通过SMS通知客户。你做什么工作?通过交换通知邮件作为通知来重构?好的。但是,如果您以后必须再次更改怎么办?我们会拒绝吗?复杂,你同意吗?

aã通过接口进入多态性的强大使用。我更好地解释...想象我们创建了一个名为“通知”的界面,并在母亲的声明中©All Notify()。实现此接口的每个类都必须提供该母亲的实现。就是说,想象一下我们的课程通知和通知将实现此接口。看起来像这样:

Image description

Image description

现在,我们的客户端类不需要更多地使用哪种类型的通知。客户可以简单地具有将致电母亲©All Notify()的类型通知的属性:

Image description

因此,客户成为要使用的通知类型的代理。谁实例客户对象可以决定要调用哪种类型的通知

Cliente pedro = new Cliente('Pedro', '123', false, notificacaoSMS);

Cliente joao = new Cliente('João', '456', false, notificacaoEmail);

通过这个简单的示例,我可以在这里带来3个基本概念:多态性,依赖性和反控制。让我们一个人冷静下来:

  • 多态性:当一个或多个类实现相同的接口时,接口表示类。当整个座右铭具有接口作为其输入时,任何实现它的类对象都可以通过此parano传递。在示例中,正如我们在客户端类中声明属性通知一样,将通知所有Customer Builder作为Parano。也就是说,允许我们通知notificacaosms and Notificitifificemail;

  • 取决于:在示例中,客户的通知为依赖。也就是说,如果在客户对象的构建中,未告知通知形式,则不会实例化客户。由于这种依赖者是通过建造者来的,因此我们说它正在注入。也就是说,依赖的注入正在发生;

  • 控制反转(IOC):通知是客户依赖的。在我们的第一个示例中,客户实例化了通知书。也就是说,客户可以控制使用了哪种类型的通知。是通过电子邮件。当我们通过接口通知使用多态性时,我们会观察到客户端类,并看到它没有更多的信息知道其使用的通知。现在,这取决于谁实例客户。也就是说,客户失去了对通知类型的控制权。现在,此控制属于那些实例的人。也就是说,依赖性存在反向控制。

请注意,这三个概念是捆绑的。不谈论其他两个人,没有办法谈论一个。为了相反,必须有依赖性注射,这是通过多态性有效发生的。正如一个亲爱的同事所说:不是魔术,这是技术。

,春天到底与之有什么关系? 亲爱的,

春天的心脏通过控制和注射的依赖来发挥作用。当我们上弹簧应用程序时,框架执行的第一步之一是So -called 组件扫描

Spring寻求您应从@sspringbootapplication指定的类中管理的所有豆类。等等,这是什么意思?

春季开始时,它会在应用程序内实例化对象的对象。各种对象将有助于春季访问他需要工作和找到的信息。这些对象称为豆。这些豆子可以在各个方面,春季中有几个注释,显示出一个类是否会生成豆子。示例:@bean,@component,@controller,@service, @repository, @entity,@configuration ... bean的所有示例。

通常,@sspringbootapplication注明了开始应用程序的类,一个具有整个main()的类。也就是说,当此类运行时,弹簧开始组件扫描过程,寻找所有代表bean的注释的类。在开始执行应用程序本身之前,它在所有这些类中都要建立所有这些类的对象。

那些没有依赖的豆子,也就是说,在建筑商中没有parano仪表,春天以宁静而上升。当需要上升的Bean取决于通过构建器接收Parano仪表时,有必要实现@configuration的类:

Image description

Image description

在上面的示例中,Spring知道将从Notificacasosconfig的通知实例化通知。因此,通知类不需要@component。

当一堂课有多个建筑物时,我们使用@Autowired来告知春季哪个建筑商用于实例化课程。好奇心:@autowired(quirck = false)使依赖(要注入),可选。也就是说,如果未实例化,它将不会发生nullpointException。

本文的目的是试图证明春季仅是由于使用具有反式赌注的那些:多态性,注射依赖和反对控制的原因。在春天使用大量IOC的徒劳的地方阅读是常见的,但是阅读其在实践中的工作方式并不常见。组件扫描是春季开始时执行的第一步之一,春季的基础是控制和委托所需的工作以及应用程序的每个部分的位置及其之间的关系。著名的“布”的重要部分。

我希望我对我的虚假解释提供了帮助,我想回到更多的文字继续这个主题。我们知道,我们可以谈论豆类在这个过程中的歧义。谢谢!