Hello Mr.J——请把我埋在这Spring里

来源:互联网 发布:伟尔金融软件 编辑:程序博客网 时间:2024/04/30 15:30

    上上篇博客中写的要逐个击破SSH,先从Spring开始。

     Spring主要常用的有两个方面,控制反转实现依赖注入和面向切面编程。

     控制反转这边好说,我们用过很多次了,将对象交给容器来管理,并且用容器的getInstance等类似的方法通过反射得到对象。

     这次来研究研究AOP。

      在.Net权限中要用到动态设置数据源的情况,我们把数据库的连接字符串保存到一个表中,之后再查询数据或是提交数据的时候将数据库连接字符串一起传过来,然后再设置数据源。

      效果是实现了,但是有一个很严峻的问题就是这样子做的话,需要更改的代码太多,是每一个WCF层的逻辑都要更改,因为你不知道用户第一次会使用哪一个方法,除非我们把业务逻辑写死,用户进来就必须先执行一个方法,再进行其他操作。

      不过嘛,这样子太死了,没什么意思,万一逻辑改了,这玩意就废了。

      所以,经过和师哥的简单讨论,我最后定了一个可行的方案,使用AOP来拦截WCF层的参数,获得这个参数中的数据库连接字符串,并且设置数据源。

      讲道理的话,这套方案是没问题的,问题就在于AOP拦截参数这个代码怎么写。。。

      .Net这边资料实在是少得令人发指,连官网我都翻了,都没找到一个能看得例子,所以只能采用曲线救国的方案,先学习JAVA怎么拦的,再回.Net。

       首先啊,我们要拦截的类要使用Spring来管理起来,我先定义一个Managetest用来调用Methodtest的方法,然后通过依赖注入将Methodtest注入Managetest类中,所以就有一个这样子的配置文件

<bean id="Managetest" class="manage.Managetest" scope="prototype"><property name="myMethod" ref="Methodtest"></property></bean><bean id="Methodtest" class="manage.Methodtest" scope="prototype"></bean>
       然后,随便定义一个切面类。比如这样。

public class Aspect {public void beforeMethod() {System.out.println("aLIEz");}}
      最后在再配置文件写一下就好了。

<aop:config proxy-target-class="true"><aop:aspect ref="Aspect"><aop:pointcut id="AOPtest"expression="execution(* manage.Managetest.*(..)) /><aop:before pointcut-ref="AOPtest" method="beforeMethod" /></aop:aspect></aop:config>
  这样子,再执行methodtest的任意方法都能显示切面类中的字符了。

      最后在研究一下参数这个需求,其实就是改改expression中的表达式,和切面类。

public class Methodtest {public void diaoyong(String str) {System.out.println(str);}}
      表达式改成这样。

<aop:config proxy-target-class="true"><aop:aspect ref="Aspect"><aop:pointcut id="AOPtest"expression="execution(* manage.Managetest.*(..))  and args(strTest)" /><aop:before pointcut-ref="AOPtest" method="beforeMethod"arg-names="strTest" /></aop:aspect></aop:config>
    看来Spring中的AOP配置的关键就在于这个表达式,抽时间研究研究。

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 老公有外遇怎么办他还舍不得小三 11选5输了6万 怎么办 k宝密码忘了怎么办5次 k宝密码输错5次怎么办 上火了牙疼怎么办怎样快速止疼 身体不吸收营养胖不起来怎么办 突然牙疼怎么办教你立刻止疼 蛀牙疼怎么办教你立刻止疼 做了牙套的牙疼怎么办 牙疼怎么办教你立刻止疼 七个月宝宝便秘拉不出来怎么办 喝酒脸上起了很多小红疙瘩怎么办 我的脸又痒又红怎么办 脸又红又痒又烫怎么办 满脸痘痘怎么办全部都是红的 身上起大片扁疙瘩很痒怎么办 我急用钱借钱又借不到怎么办 小孩蛀牙牙疼怎么办教你立刻止疼 牙齿里面长了个小牙齿怎么办 2岁宝宝又吐又拉怎么办 u盘坏了怎么办没反应了 怀孕了不知道孩子是谁的怎么办 怀孕八个月耻骨疼的厉害怎么办 没感情了这段婚姻该怎么办 1岁半宝宝o型腿怎么办 4s店没按时交车怎么办 几天几夜睡不着觉没有睡意怎么办 辣的吃多了胃疼怎么办 喉咙痛怎么办有最好即简单好得快 减肥过后皮肤留下的肥胖纹怎么办 用了完美玛丽艳脸上长痘痘怎么办 腰疼怎么办8方法解决腰疼 红米3x开不了机怎么办 苹果手机忘记了锁屏密码怎么办 小米5的4g网速慢怎么办 红米4a卡机了怎么办 信而富逾期3个月怎么办 苹果6锁屏密码忘了怎么办 孕8个月咳嗽有痰怎么办 微信红包输了6万怎么办 红米3s开不了机怎么办