爪哇2博客
爪哇2博客

春季生命周期回调

这是教程系列的16个部分中的13个

教程内容:

The 弹簧 Framework provides several callback interfaces to change the behavior 的 your 豆 in the container; they include 在itializingBean一次性豆.

弹簧 豆的生命周期很容易理解。实例化Bean时,可能需要执行一些初始化以使其进入可用状态。同样,当不再需要bean并将其从容器中删除时,可能需要进行一些清理。

初始化回调:

Implementing the 组织.springframework.beans.factory.InitializingBean interface allows a 豆 to perform 在里面ialization work after all necessary properties on the 豆 have been set by the container. The 在itializingBean interface specifies exactly one 方法:

1
2
3
 
虚空 afterPropertiesSet() 抛出 例外;
 

通常,使用 在itializingBean interface can be avoided 和 is actually discouraged since it unnecessarily couples the code to 弹簧.You have to use  afterPropertiesSet(),you can not change 名称 的 方法.There is alternative for 这个 i.e. XML-based configuration metadata.This is done using the 'init-method' attribute 的 tag.It provides flexibility 的 changing 方法 名称.
1
2
3
4
5
6
7
8
9
10
 
<ID =“ 国家Bean” =“ 组织.arpit.javapostsforlearning.Country” 在里面-方法=“在里面”/>
 
上市 国家{
 
上市 虚空 在里面() {
//做一些初始化工作
}
}
 

…与...完全相同…

1
2
3
4
5
6
7
8
9
10
 
<ID =“ 国家Bean” =“ 组织.arpit.javapostsforlearning.Country”/>
 
上市 国家 实施 在itializingBean {
 
上市 虚空 afterPropertiesSet() {
//做一些初始化工作
}
}
 

…但不会将代码耦合到Spring。

销毁回调:

Implementing the 组织.springframework.beans.factory.DisposableBean interface allows a 豆 to get a callback when the container containing it is 破坏ed. The 一次性豆 interface specifies a single 方法:

1
2
3
 
虚空 破坏() 抛出 例外;
 

 通常,使用 一次性豆 interface can be avoided 和 is actually discouraged since it unnecessarily couples the code to 弹簧.You have to use  破坏(),you can not change 名称 的 方法.There is alternative for 这个 i.e. XML-based configuration metadata.This is done using the 'destroy-method' attribute 的 tag.It provides flexibility 的 changing 方法 名称.

1
2
3
4
5
6
7
8
9
10
 
<ID =“ 国家Bean” =“ 组织.arpit.javapostsforlearning.Country” 在里面-方法=“破坏”/>
 
上市 国家{
   
    上市 虚空 破坏() {
        //做一些破坏工作(例如释放池连接)
    }
}
 

…与...完全相同…

1
2
3
4
5
6
7
8
9
10
 
<ID =“ 国家Bean” =“ 组织.arpit.javapostsforlearning.Country”/>
 
上市 国家 实施 一次性豆{
   
    上市 虚空 破坏() {
        //做一些破坏工作(例如释放池连接)   
 }
}
 

…但不会将代码耦合到Spring。

弹簧生命周期回调示例:

有关在Eclipse IDE中配置spring的信息,请参阅  你好世界的例子

1.国家/地区

这是具有某些属性的简单pojo类,因此此处的国家/地区具有名称。
在包下创建Country.java 组织.arpit.javapostsforlearning将以下内容复制到Country.java中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
组织.Arpit.爪哇postsforlearning;
 
上市 国家 {
 
     国家的名字 ;
 
    上市 getCountryName() {
        返回 国家的名字;
    }
 
    上市 虚空 setCountryName( 国家的名字) {
        这个.国家的名字 = 国家的名字;
    }
 
    上市 虚空 在里面()
    {
        系统..打印(“国家的初始化块”);
    }
 
    上市 虚空 破坏()
    {
        系统..打印(“在破坏国家”);
    }
}
 

2.ApplicationContext.xml

1
2
3
4
5
6
7
8
9
10
11
12
 
<?XML文件 ="1.0" 编码方式=“ UTF-8”?>
<豆子 XML文件ns="http://www.springframework.org/schema/beans"
XML文件ns:si="http://www.w3.org/2001/XMLSchema-instance" XML文件ns:哎呀="http://www.springframework.org/schema/aop"
si:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
 
<ID =“国家” =“ 组织.arpit.javapostsforlearning.Country” 在里面-方法=“在里面” 破坏-方法=“破坏”>
<属性 名称=“国家的名字” =“印度”/>
</>
 
</豆子>
 

3.LifetimeCallbacksMain.java

此类包含主要功能。在package下创建LifetimeCallbacksMain.java 组织.arpit.javapostsforlearning将以下内容复制到LifetimeCallbacksMain.java中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
组织.Arpit.爪哇postsforlearning;
 
进口 组织.弹簧框架.语境.支持.AbstractApplicationContext;
进口 组织.弹簧框架.语境.支持.ClassPathXmlApplicationContext;
 
上市 LifetimeCallbacksMain{
 
    上市 静态的 虚空 主要([] args) {
 
        AbstractApplicationContext appContext = ClassPathXmlApplicationContext(“ ApplicationContext.xml”);
        国家 国家Obj = (国家) appContext.getBean(“国家”);
        系统..打印(“国家的名字: ”+国家Obj.getCountryName());
        appContext.registerShutdownHook();
    }
}
 

在这里您需要注册一个关闭钩子 registerShutdownHook() 在AbstractApplicationContext类上声明的方法。这将确保正常关机并调用相关的destroy方法。

4.运行

当您在应用程序上运行时,将得到以下输出。
1
2
3
4
5
 
在里面 国家
国家 名称: 印度
破坏 国家
 

默认的初始化和销毁​​方法:

如果您有太多具有相同名称的初始化和/或销毁方法的bean,则不要’t need to declare 初始化方法破坏方法 在每个豆上。相反,框架提供了使用以下命令配置此类情况的灵活性 默认初始化方法默认销毁方法 元素上的属性如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<?XML文件 ="1.0" 编码方式=“ UTF-8”?>
<豆子 XML文件ns="http://www.springframework.org/schema/beans"
XML文件ns:si="http://www.w3.org/2001/XMLSchema-instance" XML文件ns:哎呀="http://www.springframework.org/schema/aop"
si:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
默认-在里面-方法=“在里面”
默认-破坏-方法=“破坏”
>
 
<ID =“国家” =“ 组织.arpit.javapostsforlearning.Country”>
<属性 名称=“国家的名字” =“印度”/>
</>
 
</豆子>
 

那’关于Spring生命周期回调的所有内容。


导入联系人

您可能还喜欢:

分享这个

作者

关注作者

相关文章

  • 6月24日

    弹簧或Spring Boot中没有任何类型的合格Bean

    在这篇文章中,我们将看到一个例外:没有合格的bean类型。异常是最不期望的,但是在使用Spring时可能会遇到异常。或Spring Boot。您是否收到以下异常:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有任何合格的bean类型?如果是,让’看到了不同的原因。原因1:您忘记声明[…]

  • 6月17日

    弹簧 XML配置示例

    在本文中,我们将看到如何创建基于XML的Spring hello world XML配置示例。这是创建Spring XML配置示例的简单步骤。 1.创建一个简单的java maven项目。 2. Maven依赖项将spring和cglib maven依赖项放在pom.xml中。 [crayon-601d74a2a231b218681981 /]因此,您的pom.xml如下所示:[crayon-601d74a2a231f645029398 /] 3.创建Bean类[…]

  • 6月15日

    在春季将原型bean注入到Singleton 豆中

    在这篇文章中,我们将看到如何在Spring中将原型​​bean作用域注入Singleton 在stance中。这是春季面试中最常问到的问题之一。问题将原型bean注入到singleton 豆时,原型bean的行为仍然像singleton 豆。让’借助示例了解这一点。 1.创建一个[…]

  • 6月15日

    弹簧中的循环依赖

    在这篇文章中,我们将讨论春季面试中最常问到的问题之一。如果Spring中存在循环依赖关系,会发生什么情况。问题如果Spring中存在循环依赖关系怎么办?例如:A类需要B类的实例,而B类需要A类的实例。’创建一个示例[…]

  • 9月12日

    弹簧初始化方法和销毁方法示例

    在本文中,我们将介绍Spring的初始化方法和destroy-method。当实例化或销毁bean时,可能需要执行一些操作,因此可以在创建或销毁bean时使用init-method和destroy-method调用此方法。让我们借助一个简单的例子来理解它:…]

  • 7月27日

    Prefix “context” for element “上下文:组件扫描” or “上下文:注释配置”未绑定:Spring错误

    在Spring或Spring MVC应用程序上工作时,可能会遇到以下错误消息。 组织.xml.sax.SAXParseException:前缀“context” for element “上下文:组件扫描”没有约束。或org.xml.sax.SAXParseException:前缀“context” for element “上下文:注释配置” is not bound . This issue generally occurs when you do not include 语境 名称space. For example: Lets say you have below […]

发表评论 取消回复

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。


成为朋友

©2020 爪哇2博客