爪哇2博客
爪哇2博客

春季的BeanPostProcessors

这是Spring教程系列的16个部分中的14个:Spring中的BeanPostProcessors

教程内容:初学者春季教程

BeanPostProcessors接口提供了可以实现以具有自己的实例化逻辑的方法。此外,您还可以在Spring IOC通过插入一个或多个BeanPostProcessor实现来完成实例化,配置和初始化Bean之后编写自己的逻辑。

You can 配置ure multiple BeanPostProcessors and also can decide the order in which they will run relative to each other by setting order 属性 but for that BeanPostProcessors  have to implement ordered interface.

Extension 的 BeanPostProcessor is BeanFactoryPostProcessor interface which allows direct modification 的 豆 definitions before a 豆 is instantiated

An ApplicationContext will automatically register and process a 豆 that 实施 either 的 these interfaces, but a BeanFactory would have to have a BeanPostProcessor or BeanFactoryPostProcessor registered with it programatically.

弹簧示例中的BeanPostProcessors:

有关在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. 在itCapitalPostProcessor.java</h2>

这是实现BeanPostProcessor接口的简单pojo类。
在包下创建InitCapitalPostProcessor.java 组织.arpit.javapostsforlearning将以下内容复制到InitCapitalPostProcessor.java中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
组织.Arpit.爪哇postsforlearning;
 
进口 组织.弹簧框架.豆子.BeansException;
进口 组织.弹簧框架.豆子..配置.BeanPostProcessor;
 
上市 在itCapitalPostProcessor 实施 BeanPostProcessor{
 
    上市 目的 初始化后处理(目的 , 豆名称)
            抛出 BeansException {
        系统..打印(“初始化后:” + 豆名称);
        返回 ;  //您也可以返回任何其他对象
    }
 
    上市 目的 postProcessBeforeInitialization(目的 , 豆名称)
            抛出 BeansException {
 
        系统..打印(“在初始化之前:” + 豆名称);
        返回 ;  //您也可以返回任何其他对象
    }
 
}
 

 这里我们正在编写非常简单的逻辑,但是您可以在上述函数中编写非常复杂的逻辑。您可以注意到这里有bean类的对象,因此您可以按所需的任何方式对其进行更改并可以返回相同或不同的对象。

3.pplicationContext.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” 在里面-方法=“在里面” 破坏-方法=“破坏”>
<属性 名称=“国家的名字” =“印度”/>
</>
      <=“ 组织.arpit.javapostsforlearning.InitCapitalPostProcessor”/>
 </豆子>
 

4.BeanPostProcessorExampleMain.java

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

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

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

5,运行

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

那’关于Spring的BeanPostProcessors的全部内容。


导入联系人

您可能还喜欢:

分享这个

作者

关注作者

相关文章

  • 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-601f9e530bd91475283561 /]因此,您的pom.xml如下所示:[crayon-601f9e530bd9a261668192 /] 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博客