博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring中使用BeanPostProcessor需要注意的地方
阅读量:6918 次
发布时间:2019-06-27

本文共 2079 字,大约阅读时间需要 6 分钟。

hot3.png

Spring中Bean的实例化过程如下:

 

其中BeanPostProcessor的前置和后置处理的方法中都要返回该bean,不能是null,不然在getBean的时候获取不到。

public interface PasswordDecodable{	public String getEncodedPassword();		public void setDecodedPassword(String password);}

public class LoginModel implements PasswordDecodable{	private String password;		public LoginModel()	{			}		public LoginModel(String password)	{		this.password = password;	}		@Override	public String getEncodedPassword()	{		// TODO Auto-generated method stub		return this.password;	}	@Override	public void setDecodedPassword(String password)	{		// TODO Auto-generated method stub		this.password = password;	}}

import org.springframework.beans.BeansException;import org.springframework.beans.factory.config.BeanPostProcessor;import com.uqee.spring.beans.PasswordDecodable;import com.uqee.utils.Md5Token;public class PasswordDecodePostProcessor implements BeanPostProcessor{	@Override	public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException	{		// TODO Auto-generated method stub		return bean;	}	@Override	public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException	{		// TODO Auto-generated method stub		if(bean instanceof PasswordDecodable)		{			String encodedPassword = ((PasswordDecodable)bean).getEncodedPassword();			String decodePassword = decodePassword(encodedPassword);			((PasswordDecodable)bean).setDecodedPassword(decodePassword);		}		return bean;	}		private String decodePassword(String encodePassword)	{		return Md5Token.getInstance().getLongToken(encodePassword);	}}

demo

PasswordDecodePostProcessor的postProcessAfterInitialization和postProcessBeforeInitialization均不能返回null,不然下列代码:
ConfigurableListableBeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext3.xml"));		factory.addBeanPostProcessor(new PasswordDecodePostProcessor());		PasswordDecodable passwordDecodable = (PasswordDecodable)factory.getBean("loginModel");

中passwordDecodable会是null引用。

转载于:https://my.oschina.net/u/218421/blog/37743

你可能感兴趣的文章
C2审核模式(c2 audit mode)
查看>>
通过Eclipse安装Aptana Studio 3
查看>>
我的友情链接
查看>>
Packet Tracer 5.0建构CCNA实验攻略(17)——终结篇
查看>>
V-3-3 在没有vCenter的情况下,复制虚拟机
查看>>
Windows脚本初探之PowerShell脚本执行策略
查看>>
Windows脚本初探之PowerShell流程控制break
查看>>
DNS动态更新|安全和非安全的区别
查看>>
统计一行输入中有多少个汉字
查看>>
第3章 玩转mysql第三天 3-17- 范式基础篇
查看>>
我的友情链接
查看>>
Zabbix-proxy的搭建和配置全过程
查看>>
shell 中获取一个uuid
查看>>
Paxos算法
查看>>
linux 开机流程
查看>>
context 和 getApplicationContext()
查看>>
谷歌眼镜计划明年“高价”上市
查看>>
桌面虚拟化简介
查看>>
Andriod 第五课----图形界面
查看>>
linux 控制sshd的远程访问
查看>>