详细的Spring配置和SpringBoot
关键词:XXX,XXX,XXX,XXX
在上一章中,我们详细介绍了控制反转(IoC)的概念以及它如何适合Spring 框架。但是,我们实际上只触及了Spring Core可以做的事情。Spring提供了广泛的服务,以补充和扩展其基本的IoC功能。在本章中,您将详细探讨这些内容。具体来说,您将看到以下内容:
·管理bean的生命周期:到目前为止,您所看到的所有bean都非常简单,并且与Spring 容器完全分离。在本章中,我们介绍了一些策略,可用于便_ bean在生命周期的各个时间点从Spring 容器接收通知。您可以逍过实现.Spring 布同的符定接口,指定Spring可以通过反射调用的方法或使用JSR-250 JavaBeans生命周期注释来实现此目的。
使 Bean具有“Spring意识”:在某些情况下,您希望Bean能够与配置它的ApplicationContext实例进行交互。因此,Spring 提供了两个接口BeanNameAware和ApplicationContextAware(在第3章的末尾引入),这两个接口使您的bean可以获取其分配的名称并分别引用其ApplicationContext。本章的这一部分介绍了如何实现这些接口,并给出了在应用程序中使用它们的一些实际想法。
使用FactoryBeans:顾名思义,FactoryBean接口旨在由充当其他 Beanfactory中的任何bean来实现。FactoryBean接口提供了一种机制,通过该机制,您可以轻松地将自己的工厂与Spring BeanFactory接口集成。
使用JavaBeans PropertyEditor: PropertyEditor接口是java.beans包中提供的标准接口。PropertyEditor用于在字符串表示形式之间来回转换属性值。Spring广泛使用PropertyEditor,主要是读取BeanFactory配置中指定的值并将其转换为正确的类型。在本章中,我们将讨论Spring 随附的 PropertyEditor集合,以及如何在应用程序中使用它们。我们还将介绍实现自定义 PropertyEditor的过程。
了解有关Spring ApplicationContext的更多信息:众所周知,ApplicationContext是BeanFactory的扩展,旨在在完整的应用程序中使用。ApplicationContext接口提供了一组有用的附加功能,包括跨地区的消息支持、资源加载和事件发布。
在本章中,我们将详细介绍 ApplicationContext提供的IoC和其他功能。我们还领先一步,向您展示了构建Web应用程序时ApplicationContext如何简化 Spring的使用。
使用Java类进行配置:在3.0之前,Spring 仅支持XML基本配置以及 Bean和依赖项配置的注释。从3.0开始,Spring 为开发人员提供了另一个选项,供开发人员使用Java类配置Spring ApplicationContext接口。我们来看看Spring应用程序配置中的这个新选项。
使用Spring Boot:使用Spring Boot使Spring应用程序配置更加实用。这个 Spring项目使创建“Spring”的应用程序变得容易。
·使用配置增强功能:我们提供了使应用在厅凯直文合么功的并尼加何使用它们件管理、环境和属性源等。在本节中,我们将介绍这些功能并显示如何使用它们来满足特定的配置需求。
使用Groovy进行配置:Spring 4.0的新增功能是可以使用Groovy 语言配置bean定义,该语言可以用作现有XML和Java配置方法的替代或补充。
Spring 对应用程序可移植性的影响
本章讨论的大多数功能都是特定于Spring 的,在许多情况下,其他IoC容器均不提供这些功能。尽管许多IoC容器提供生命周期管理功能,但它们可能通过与Spring不同的一组接口来实现。如果应用程序在不同IoC容器之间的可移植性确实很重要,那么您可能要避免使用将应用程序耦合到Spring的某些功能。
但是请记住,通过设置约束(意味着您的应用程序可在IoC容器之间移植),您将失去Spring 提供的丰富功能。因为您可能会做出使用Spring的战略选择,所以最好使用Spring。
小心不要对便携性提出任何要求。在许多情况下,应用程序的最终用户并不关心该应用程序是否可以在三个不同的IoC容器上运行;他们只是想要它运行。根据我们的经验,尝试使用所选技术中可用功能的最低公分母来构建应用程序通常是一个错误。从一开始,这样做通常会使您的应用程序处于不利的地位。但是,如果您的应用程序需要IoC容器可移植性,请不要将其视为缺点-这是真正的要求,因此,您的应用程序应满足这一要求。Rod Johnson和JuirgenHoller在“专家一对一:无EJB的J2EE开发”中(Wrox,2004年)将这些类型的需求描述为虚拟需求,并提供了更详细的讨论以及它们如何影响您的项目。
尽管使用这些功能可能会将您的应用程序耦合到Spring Framework,但实际上您在更大范围内提高了应用程序的以移值任。Orin态的IoC容器构建的应用程序可架,该框架没有特定的供应商关系。使用Spring 的IoC容器构建的应用程序可
以在Java运行的任何地方运行。对丁JavIE相同的功能,还提供了一些类来抽辟了新的可能性。Spring 提供了许多与JEE相同的功能,还提供了一些类来抽象和简化JEE的许多其他方面。在许多情况下,可以使用Spring 构建一个Web应用程序,该Web应用程序运行在一个间丰九erVa符与S,ring耦合,您可以JEE应用程序服务器的应用程序具有相同的复杂度。通过与Spring耦合,您可以通过用 Spring中的等效功能替换许多特定于供应商或依赖于特定于供应商的配置的功能,从而提高应用程序的可移植性。
Bean生命周期管理,任何IoC容器(包括Spring)的一个重要部分是,可以以这样的方式构造bean,使其在生命周期的某些点接收通知。这使您的 bean可以在一生中的某些时间执行相关处理。通常,两个生命周期事件与Bean特别相关:初始化后和销毁前。在 Spring 的上下文中,一旦Spring完成在 Bean上设置所有属性值并完成您配置
为执行的所有依赖项检查,就会引J对十直有原型范围的bean,Spring不会前立即触发pre-destruction事件。但是,对于具有原型范围的bean,Spring不会触发预破坏事件。Spring的设计是,无论对象的bean范围如何,都将在对象上调用初始化生命周期回调方法,而对于具有原型范围的 bean,则不会调用销毁生命周期回调方法。Spring 提供了三种机制,bean可以使用这些机制来挂钩每个事件并执行一些附加处理:基于接口的,基于方法的和基于注释的机制。
使用基于接口的机制,您的bean实现了一个特定于其想要接收的通知类型的接口,并且Spring 通过该接口中定义的回调方法来通知bean。对于基于方法的机制,Spring 允许您在ApplicationContext配置中指定初始化 bean时要调用的方法的名称和破坏 bean时要调用的方法的名称。对于注释机制,可以使用JSR-250注释指定Spring在构造之后或销毁之前应调用的方法。
在这两种情况下,机制均实现完全相同的目标。该接口机制在整个Spring 厂没使用,因此您不必每次使用Spring 组件之一时都要指定初始化或销毁万法。但是,在您自己的 bean 中,使用基于方法或注释机制可能会更好,因为您的bean不需要实现任何特定于Spring 的接口。尽管我们说可移植性通常并不像您认为的那样重要,但并不意味着您可以在存在完美替代品的情况下牺牲可移植性。就是说,如果您以其他方式将应用程序耦合到Spring,四便川inerTace的捉您一次指定回调,然后将其忽略。如果您要定义许多需要利用生命周期退知的相同类型的 bean,那么使用接口机制可以避免为XML配置文件中的每个bean指定生命周期回调方法的需要。使用JSR-250注释也是另一个可行的选择,因为它是JCP定义的标准,并且您也没有与Spring 的特定注释耦合。只要确保您在其上运行应用程序的IoC容器支持JSR-250标准即可。
总体而言,用于接收生命周期通知的机制的选择取决于您的应用程序要求。如果您担心可移植性,或者仅定义一个或两个需要回调的特定类型的_bean,请使用基于方法的机制。如果您使用注释类型配置,并且确定您正在使用支持.JSR-250的IoC容器,请使用注释机制。如果您不太担心可移植性,或者正在定义许多需要生命周期通知的相同类型的 Bean,则使用基于接口的机制是确保您的_Bean始终收到他们期望的通知的最佳方法。如果打算在许多不同的 Spring项目中使用Bean,那么几乎可以肯定,您希望该Bean的功能尽可能独立,因此您绝对应该使用基于接口的机制。
通过知道何时初始化,bean可以检查是否满足其所有必需的依赖关系。尽管Spring可以为您检查依赖关系,但这几乎是一种全有或全无的方为将其他逻辑应用于依赖关系解的,并且在没有提供依赖项的情况下,其声明为setter的 bean,其中两个是必需的,并且在没有提供依赖中一个具有适当的默认值。使用初始化回调,您的 bean可以检查所需的依赖项,引发异常或根据需要提供默认值。
Bean无法在其构造函数中执行这些检查,因为此时,spring还没有机会为其可以满足的依赖关糸提供值。在spring完成提供其可能的依赖关系并执行您要求的所有依赖关糸检查之后,将调用spring中的初始化回调。
您不仅限于使用初始化回调来检查依赖关系:您可以在回调中做任何您想做的事情,但这对于我们描述的目的最有用。在许多情况下,初始化回调也是触发Bean 响应其配置而必须自动执行的任何操作的地方。例如,如果您构建一个运行计划任务的bean,则初始化回调提供了启动调度程序的理想位置毕竟,配置数据是在bean上设置的。
创建Bean时执行方法
如前所述,接收初始化回调的一种方法是在bean上指定一个方法作为初始化方法,并告诉spring使用此方法作为初始化方法。如前所述,当您只有几个相同类型的bean或想让应用程序与spring分离时,此回调机制非常有用。使用此机制的另一个原因是使您的sprmg应用程序可以使用以前构建的或由第三方供应商提供的bean指定回调方法只是在bean的lt;beangt;标签的init-method属性中指定名称的情况。以下代码示例显示了具有两个依赖关系的基本bean:
注意,我们已经定义了一个方法 init()用作初始化回调。init()方法检查是否已设置name属性,如果尚未设置,则使用DEFAULT_NAME常量中存储的默认值。init ( )方法还检查是否设置了age属性,如果未设置,则抛出IllegalArgumentException。
SimpleBean类的 main ( )方法尝试使用自己的 getBean ( ) 方法GenericXmlApplicationContext中获取所有Singer类型的三个bean。请注意,在getBean ()方法中,如果成功获取了 bean,则其详细信息
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[596061],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。
您可能感兴趣的文章
- 为非政府组织OG慈善基金会设计的基于社区的救灾管理系统外文翻译资料
- 基于UML建模的医疗系统电子健康服务软件外文翻译资料
- 开发一种具有增强现实功能的智能手机应用程序, 以支持护理学生对心衰的虚拟学习外文翻译资料
- 在开发 Web 应用程序中应用 Vue.JS 框架外文翻译资料
- 基于MES系统的生产车间信息管理研究外文翻译资料
- 基于Vue.js和MySQL的电子商务平台的设计与实现外文翻译资料
- 详细的Spring配置和SpringBoot外文翻译资料
- 基于NS2的DSR和AODV协议的性能比较研究外文翻译资料
- 不同仿真参数下NS2的TCP吞吐量性能外文翻译资料
- 基于Spring Boot和VUE的车辆管理系统实现外文翻译资料