欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

如何為spring代理類設置屬性值

系統 1871 0

?

在問答頻道 有朋友問 《如何為spring代理類設置屬性值》 ?就寫了個小工具 供使用。思想就不講了。

現在有一個bean包含了私有屬性,如下:

Java代碼? ? 收藏代碼
  1. @Component ??
  2. public ? class ?Bean?{??
  3. ????String?name;??
  4. ??
  5. ???? public ?String?getName()?{??
  6. ???????? return ?name;??
  7. ????}??
  8. ??
  9. ???? public ? void ?setName(String?name)?{??
  10. ???????? this .name?=?name;??
  11. ????}??
  12. ??????
  13. }??

它被AOP配置過代理,代理配置為:

?

Java代碼? ? 收藏代碼
  1. <aop:pointcut?expression= "execution(*?com..*Bean.*(..))" ??
  2. ????????????id= "txBean" ?/>??

?現在對它進行測試:

Java代碼? ? 收藏代碼
  1. public ? class ?BeanTest? extends ?SpringContextTestCase{??
  2. ???? @Autowired ??
  3. ???? private ?Bean?bean;??
  4. ???? @Test ??
  5. ???? public ? void ?testBean(){??
  6. ????????bean.setName( "dylan" );??
  7. ????????System.out.println(bean.name);??
  8. ????????System.out.println(bean.getName());??
  9. ????}??
  10. }??

?這里的測試結果中,第一個輸出為null,第二個輸出為dylan,

由于項目中需要直接通過bean.name的方式來獲取屬性值,卻一直都只能得到null,請問如何才能獲取到我所期望的值"dylan"呢

?

?

默認是沒有辦法的。我幫你寫了個AOP切面 幫你完成設置屬性。?

Java代碼? ? 收藏代碼
  1. import ?java.beans.PropertyDescriptor;??
  2. import ?java.lang.reflect.Field;??
  3. import ?java.lang.reflect.Method;??
  4. ??
  5. import ?org.aspectj.lang.JoinPoint;??
  6. import ?org.aspectj.lang.annotation.After;??
  7. import ?org.aspectj.lang.annotation.Aspect;??
  8. import ?org.springframework.aop.support.AopUtils;??
  9. import ?org.springframework.beans.BeanUtils;??
  10. import ?org.springframework.core.annotation.Order;??
  11. ??
  12. @Aspect ??
  13. @Order (Integer.MIN_VALUE)??
  14. public ? class ?SetterAspect?{??
  15. ??????
  16. ???? @After (value= "execution(*?*.set*(*))?&&?args(value)" ,?argNames= "value" )??
  17. ???? public ? void ?after(JoinPoint?jp,?Object?value)?{??
  18. ????????Object?proxy?=?jp.getThis();??
  19. ????????Object?target?=?jp.getTarget();??
  20. ??????????
  21. ???????? if (AopUtils.isAopProxy(proxy))?{ //只有代理對象才需要處理 ??
  22. ??????????????
  23. ???????????? try ?{??
  24. ????????????????Class<?>?proxyClass?=?proxy.getClass();??
  25. ????????????????Class<?>?targetClass?=?target.getClass();??
  26. ????????????????String?methodName?=?jp.getSignature().getName();??
  27. ??????????????????
  28. ????????????????Method?m?=?BeanUtils.findDeclaredMethod(proxyClass,?methodName,? new ?Class[]{value.getClass()});??
  29. ????????????????PropertyDescriptor?descriptor?=?BeanUtils.findPropertyForMethod(m);??
  30. ????????????????String?propName?=?descriptor.getName();??
  31. ??????????????????
  32. ????????????????Field?f?=?targetClass.getClass().getDeclaredField(propName);??
  33. ???????????????? if (f?!=? null )?{??
  34. ????????????????????f.setAccessible( true );??
  35. ????????????????????f.set(proxy,?value);??
  36. ????????????????}??
  37. ????????????}? catch ?(Exception?e)?{??
  38. ????????????????e.printStackTrace(); //記錄好異常進行處理 ??
  39. ????????????}??
  40. ????????}??
  41. ????}??
  42. ??
  43. } ?

如何為spring代理類設置屬性值


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 91精品国产91久久久久久 | 国产超91| 日韩在线免费视频 | 99久热国产精品视频尤物不卡 | 久久亚洲国产午夜精品理论片 | 老头天天吃我奶躁我午夜视频 | 一级做一级爱a做片性视频视频 | 小宝与康熙粤语 | 精品综合在线 | 一区二区三区中文字幕 | 国产精品视频免费观看 | 欧美激情视频一区二区三区在线播放 | 日本黄页免费大片在线观看 | 亚洲欧美日韩在线 | 欧美大香线蕉线伊人久久 | 精品国产自在2o18 | 日本中文字幕视频 | 人人插人人澡 | av片在线播放| 奇米影视第七色 | 欧美在线观看19 | 久久精品中文字幕 | 欧美日韩在线免费 | 婷婷精品国产一区二区三区日韩 | 黄免费在线 | 日本一区二区三区中文字幕 | 国产精品亚洲综合 | 亚洲一区二区三区久久 | 免费一级毛片不卡在线播放 | 很黄很色又爽很黄很色又爽 | 国产精品尤物在线 | 看一天影院宅急看在线观看 | 色综合天天综合网国产成人网 | 69av亚洲| 秋霞av电影 | 国产精品成人va在线观看入口 | 丁香花在线电影小说观看 | 国产福利视频在线 | 免费看av的网址 | 国产精品综合 | 北条麻妃国产九九九精品小说 |