Spring实战之容器后处理器操作示例

网友投稿 257 2022-12-19


Spring实战之容器后处理器操作示例

本文实例讲述了Spring实战之容器后处理器。分享给大家供大家参考,具体如下:

一 配置文件

xmlns="http://springframework.org/schema/beans"

xmlns:p="http://springframework.org/schema/p"

xsi:schemaLocation="http://springframework.org/schema/beans

http://springframework.org/schema/beans/spring-beans-4.0.xsd">

init-method="init" p:name="孙悟空" p:axe-ref="steelAxe"/>

class="org.crazyit.app.util.MyBeanFactoryPostProcessor"/>

xmlns="http://springframework.org/schema/beans"

xmlns:p="http://springframework.org/schema/p"

xsi:schemaLocation="http://springframework.org/schema/beans

http://springframework.org/schema/beans/spring-beans-4.0.xsd">

init-method="init" p:name="孙悟空" p:axe-ref="steelAxe"/>

class="org.crazyit.app.util.MyBeanFactoryPostProcessor"/>

init-method="init" p:name="孙悟空" p:axe-ref="steelAxe"/>

class="org.crazyit.app.util.MyBeanFactoryPostProcessor"/>

class="org.crazyit.app.util.MyBeanFactoryPostProcessor"/>

二 接口

Axe

package org.crazyit.app.service;

public interface Axe

{

public String chop();

}

Person

package org.crazyit.app.service;

public interface Person

{

public void useAxe();

}

三 Bean

Chinese

package org.crazyit.app.service.impl;

import org.springframework.beans.factory.InitializingBean;

import org.springframework.beans.BeansException;

import org.springframework.beans.factory.config.BeanPostProcessor;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import org.crazyit.app.service.*;

public class Chinese

implements Person,InitializingBean

{

private Axe axe;

private String name;

public Chinese()

{

System.out.println("Spring实例化主调bean:Chinese实例...");

}

public void setAxe(Axe axe)

{

this.axe = axe;

}

public void setName(String name)

{

System.out.println("Spring执行setName()方法注入依赖关系...");

this.name = name;

}

public voihttp://d useAxe()

{

System.out.println(name + axe.chop());

}

// 下面是两个生命周期方法

public void init()

{

System.out.println("正在执行初始化方法 init...");

}

public void afterPropertiesSet() throws Exception

{

System.out.println("正在执行初始化方法 afterPropertiesSet...");

}

}

SteelAxe

package org.crazyit.app.service.impl;

import org.crazyit.app.service.*;

public class SteelAxe

implements Axe

{

public SteelAxe()

{

System.out.println("Spring实例化依赖bean:SteelAxe实例...");

}

public String chop()

{

return "钢斧砍柴真快";

}

}

四 容器后处理器

package org.crazyit.app.util;

import org.springframework.beans.BeansException;

import org.springframework.beans.factory.config.BeanFactoryPostProcessor;

import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;

public class MyBeanFactoryPostProcessor

implements BeanFactoryPostProcessor

{

/**

* 重写该方法,对Spring进行后处理。

* @param beanFactory Spring容器本身

*/

public void postProcessBeanFactory(

ConfigurableListableBeanFactory beanFactory)

throws BeansException

{

System.out.println("程序对Spring所做的BeanFactory的初始化没有改变...");

System.out.println("Spring容器是:" + beanFactory);

}

}

五 测试类

package lee;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import org.crazyit.app.service.*;

public class BeanTest

{

public static void main(String[] args)

{

// 以ApplicationContex作为Spring容器

// 它会自动注册容器后处理器、Bean后处理器

ApplicationContext ctx = new

ClassPathXmlApplicationContext("beans.xml");

Person p = (Person)ctx.getBean("chinese");

p.useAxe();

}

}

六 测试结果

程序对Spring所做的BeanFactory的初始化没有改变...

Spring容器是:org.springframework.beans.factory.support.DefaultListableBeanFactory@6a024a67: defining beans  [steelAxe,chinese,beanFactoryPostProcessor]; root of factory  hierarchy

Spring实例化依赖bean:SteelAxe实例...

Spring实例化主调bean:Chinese实例...

Spring执行setName()方法注入依赖关系...

正在执行初始化方法  afterPropertiesSet...

正在执行初始化方法   init...

孙悟空钢斧砍柴真快

更多关于java相关内容感兴趣的读者可查看本站专题:《Spring框架入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring实战之属性占位符配置器用法示例
下一篇:Java获取手机号码归属地的实现
相关文章

 发表评论

暂时没有评论,来抢沙发吧~