当通过XML配置IOC容器时,标签的属性可以指定BEAN的范围,如下所示。如果您未指定属性,默认值,即单个case范围。
属性值具有以下5个选项,也就是说,有5种类型的弹簧bean。
在开发过程中,建议使用BEAN的状态,建议使用它。
使用时会创建“懒惰”,以便在初始化类时可以预先避免类。产生的,不能保证独特性。
如何注入原型豆,有两种方法
注射时不能使用多示例模式(),否则它仍然是单打模式。要进行多种模式()注入,您可以通过该方法获得bean或获得bean。
让我们看一下什么是豆。
仅仅是您应用程序中的许多对象之一。豆子和其中的依赖项反映在配置元数据用户中。
在春季,应用程序的主要应用程序以及Spring IOC容器的对象管理称为“ bean”。“ bean”是实例,弹簧IOC容器的汇编和管理对象。
也就是说,Spring Bean的生命周期由IOC容器完全控制。应该指出的是,Spring只能帮助我们管理单个示例的完整生命周期。对于Bean,Spring将不再管理向用户创建后的后续生命周期。
创建单身豆后,将其放置在IOC容器的高速缓存池中,并触发Spring的生命周期管理。
Spring Bean的生命周期可以简单地分为(请参阅以下功能)
Bean自己的方法(功能)将Bean的生命周期划分为例如,属性分配,初始化和破坏这四个阶段。但是Spring扩大了Bean的生命周期,精致的生命周期过程如下。
属性分配(人口)
初始化(初始化)
破坏
初始化过程的膨胀点和上述初始化方法,初始化过程的扩展点包括(参考以下功能)
初始化过程后的豆生命周期过程如下图所示。
破坏过程的扩展点和上述销毁方法,被破坏过程的膨胀点包括(参考以下功能)
在上面的分析的基础上,编写示例代码以打印Bean生命周期中每种方法的执行顺序。在XML中创建了一个新的接口,,,,,,,构造和方法。
如上所述,初始化过程的扩展点包括
在项目中,经常在启动容器时执行特定的初始化操作,例如资源文件的加载。通用方式包括(还可以使用相关接口)
1.使用Spring的@PostConstruct注释,指示此方法在Spring实例化此方法后立即执行,然后将其实例化为其他Bean,并且一个Bean中有多种方法。
以下结合了一个特定示例来解释。
从操作的结果可以看出,在实例化bean1(执行BEAN1的结构函数之后)后,Spring立即执行其注释方法,然后实例化了Bean3.在它们中,Bean2不受Spring IOC容器的管理。
@postConstruct
加载服务器时,修改方法将运行,仅服务器一次调用一次。类似的方法。修改后的方法将在构造函数之前运行。
当服务器卸载时,修改方法将运行,并且仅由服务器调用一次,类似于该方法。修改后的方法将在服务器完全卸载之前执行。
constructionor, @autowired和@postConstructs可以从依赖注入的字面意义中知道。要将对象p注入对象A中,然后您必须首先生成对象A和对象P进行注射。因此,如果A类A类中有成员变量P,则在执行A的构造函数后发生注射。
如果要在生成对象时完成某些初始化操作,并且这些初始化操作取决于依赖的注入,则不能在构造函数中实现。出于此原因,可以使用注释方法来完成初始化。依赖注入完成后,将自动调用注释方法。
执行令是
结合以下代码,加深对三种方法的执行顺序的理解。
2.实现初始化接口的类的源代码如下,其中包含一种方法。
3.在配置文件中
以上三种方法的实现顺序引入了三种方法,以执行初始化bean时执行特定的初始化操作。
执行结果如下
可以看出,首先执行注释的方法,然后实现接口的方法,最后执行在配置文件中配置的方法。执行顺序为
至于原因,您可以看到源代码。
从上面的源代码可以看出,实现接口是一种直接调用方法,它比反射呼叫相对较高,比指定方法的效率相对较高。但是该方法消除了对弹簧的依赖。
上一章中的实际战斗应用程序“在初始化bean时执行特定的初始化操作”是开放的 - 通过实现接口进行的 - 世界操作以执行特定的初始化操作。在实际业务开发中,它可以执行监视和降级配置等操作通过此界面。
看看一个例子。
原始:https://juejin.cn/post/7099649788500508685