Spring - Bean管理之生命周期之BeanPostProcessor
发布日期:2021-06-30 23:46:58
浏览次数:2
分类:技术文章
本文共 2585 字,大约阅读时间需要 8 分钟。
如果对动态代理还未曾有一定的认识(下文会用到),请先看这篇:
package com.imooc.ioc.demo3;public interface UserDao { public void findAll(); public void save(); public void update(); public void delete();}package com.imooc.ioc.demo3;public class UserDaoImpl implements UserDao { @Override public void findAll() { System.out.println("查询用户。。。"); } @Override public void save() { System.out.println("保存用户。。。"); } @Override public void update() { System.out.println("修改用户。。。"); } @Override public void delete() { System.out.println("删除用户。。。"); }}
package com.imooc.ioc.demo3;import org.springframework.beans.BeansException;import org.springframework.beans.factory.config.BeanPostProcessor;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class MyBeanPostProcessor implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println("第五步:初始化前方法..."); return bean; } @Override public Object postProcessAfterInitialization(final Object bean, String beanName) throws BeansException { System.out.println("第八步:初始化后方法..."); if("userDao".equals(beanName)){ Object proxy = Proxy.newProxyInstance(bean.getClass().getClassLoader(), bean.getClass().getInterfaces(), new InvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if("save".equals(method.getName())){ System.out.println("权限校验==================="); return method.invoke(bean,args); } return method.invoke(bean,args); } }); return proxy; } else{ return bean; } }}
package com.imooc.ioc.demo3;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * Bean的作用范围的测试 */public class SpringDemo3 { @Test public void demo3(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); UserDao userDao = (UserDao)applicationContext.getBean("userDao"); userDao.findAll(); userDao.save(); userDao.update(); userDao.delete(); }}
运行结果:第五步:初始化前方法...第八步:初始化后方法...查询用户。。。权限校验===================保存用户。。。修改用户。。。删除用户。。。
转载地址:https://lux-sun.blog.csdn.net/article/details/84110110 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月29日 14时28分24秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Python量子计算qiskit
2019-04-30
Python的多线程不是真的多线程(GIL全局解释器锁)
2019-04-30
Python手动读取MNIST数据集
2019-04-30
Python手动读取CIFAR-10数据集
2019-04-30
Pytorch(十一) —— 分布式(多GPU)训练
2019-04-30
Deeplab v3
2019-04-30
tensor/矩阵/图片等更换通道,调整size
2019-04-30
本地和colab 中 改变tensorflow的版本
2019-04-30
CUB-200鸟类数据集
2019-04-30
Python反射机制
2019-04-30
YAPF —— Python代码格式化工具
2019-04-30
ranger
2019-04-30
slurm
2019-04-30
torch.distributed 分布式
2019-04-30
MATLAB与CUDA
2019-04-30
Linux png转jpg (convert命令)
2019-04-30
NAS (Network Attached Storage 网络附属存储)
2019-04-30
Ubuntu更新后终端中字体的颜色全是白色
2019-04-30
vscode git
2019-04-30