方法增强返回的不同对象的作用?

方法增强返回的不同对象的作用?

方法增强的proxy代理对象,没有增强返回bean,这个两种不同的情况,放回的不同的对象有什么作用,可不可以统一写成 return null 。 
if ("userDao".equals(beanName)) {
    Object proxy = Proxy.newProxyInstance(bean.getClass().getClassLoader()
            , bean.getClass().getInterfaces(), new InvocationHandler() {
                public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                    if ("save".equals(method.getName())) {
                        System.out.println("save权限认证");
                        return method.invoke(bean,args);
                    }
                    return method.invoke(bean,args);
                }
            });
    return proxy;
} else {
    return bean;
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
chrismorgen 2019-02-12 14:03:52

返回proxy是返回代理类,也就是说save方法被增强了,而直接返回bean则是直接返回当前类了,要注意的是,不能统一写成return null,如果返回的是null那么我们通过getBean方法将得不到目标了,祝学习愉快~

  • 提问者 cherish_zp #1
    方法增强了,返回的是代理类,那么在实际返回的这个代理类和 没有增强是返回的bean,有区别没,除了做了一个 权限的判断外,两个返回的两个不同类有哪些具体的区别吗?
    2019-02-12 18:06:06
  • chrismorgen 回复 提问者 cherish_zp #2
    返回代理类就是对这个类进行增强了,比如老师所讲的,可以对这个类中的方法进行增强,如果不代理是不会进行增强的,没有增强返回的bean就是不对当前类进行代理,你可以这么理解,代理之后就可以在postProcessAfterInitialization方法中书写你想要书写的逻辑了,直接返回bean,就是对当前类什么都不做。同学可以在回顾一下课程哦,祝学习愉快~
    2019-02-12 19:12:50
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
SSM主流框架入门与综合项目实战2018版
  • 参与学习           人
  • 提交作业       205    份
  • 解答问题       4317    个

Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师