在整个生命周期中,我们可以自定义Bean的初始化并破坏钩子功能。当Bean的生命周期达到相应的阶段时,Spring会称呼我们的自定义Bean的初始化和破坏方法。有许多方法可以自定义Bean初始化和破坏方法,该方法将一一引入。
在上一节中,可以在配置类中注册BEAN,我们还可以指定BEAN的初始化和方法。
为了证明,我们构建了一个新的Spring Boot项目,然后创建一个类:
然后在配置类中注册组件,并指定初始化和破坏方法:
该方法对应于用户类。
在春季启动条目类中测试:
启动项目,观察控制台输出:
从上面的输出来看,我们可以看到,在容器启动之前,非调理构造器会创建调用对象的对象,然后调用初始化方法,并在关闭容器时调用破坏方法。
上述情况是一个例子。如果组件是多案例,情况是什么?我们将上述组件注册配置更改为多种情况,然后再次启动项目以观察控制台输出:
在多case模式下,IOC容器在启动时不会创建对象,而是在每次获取时调用创建对象的方法,然后在创建对象后调用初始化方法。
但是,在容器关闭后,Spring不会调用相应的破坏方法,因为在多个模式下,容器将无法管理此组件(仅在需要时在此组件中创建此组件),因此,当容器关闭时,并且容器已关闭,并且容器已关闭,并且容器已关闭,并且将其关闭。相应的破坏方法不会调用。
除了上述指定初始化和破坏方法的方法外,Spring还为我们提供了初始化,以破坏相应的接口:
创建一个新类,名称,然后实现这两个接口:
在配置类中注册此组件:
测试波:
启动项目,观察控制台输出:
除了上述两种指定初始化和破坏方法的方法外,我们还可以使用和注释修改方法来指定相应的初始化和破坏方法。
创建一个新课,名称鱼:
该组件在配置类中:
测试波:
启动项目,观察控制台输出:
效果与上述两种方式一致。
这两个注释未由Spring提供,而是由JSR250规范提供的。
Spring提供了一个界面,通常称为Bean后通知处理器,该接口提供了两种方法,并且在组件的初始化方法之前执行,并且在组件的初始化方法之后执行执行。它们都包括两个参数:
两种方法都返回对象类型,我们可以直接返回当前的组件对象,或在包装后返回。
让我们定义接口的实现类:
在配置类中注册此组件:
再次开始项目,观察控制台输出:
主要掌握创建过程和破坏过程的两个方面:
设置属性后,AfterPropertiesset方法会执行一些自定义定义的事情;调用由BEAN定义的INIT方法执行一些初始化相关的任务;然后调用后处理后的bean初始化后进行一些定制的工作。这四种方法的调用与AOP有点相似。这次,Bean被初始化,您可以使用此BEAN。
破坏过程:如果实施了可支配BEAN销毁方法,请称呼它,并且实现了自定义破坏方法,请称呼它。