posts - 325,  comments - 25,  trackbacks - 0

          代理分JDK動態(tài)代理(代理接口)和CGLIB代理(代理具體類),CGLIB代理是目標對象的子類
          aop代理就是由aop框架動態(tài)生成的一個對象,spring的aop代理大都由ProxyFactoryBean工廠類產(chǎn)生,配置ProxyFactoryBean需要如下兩個屬性:1.代理的目標對象 2.處理(Advice)
          一、代理接口
          實例:基于AOP的權限認證
          1.Service組件接口
          public interface TestService
          {
              void view();
              void modify();
          }
          2.Service接口實現(xiàn)類
          public class TestServiceImpl implements TestService
          {
              public void view()
              {
                  System.out.println("查看數(shù)據(jù)");
              }
              public void modify()
              {
                  System.out.println("修改數(shù)據(jù)");
              }
          }
          3.攔截器類
          public class AuthorityInterceptor implements MethodInterceptor
          {
              private User user;
              public void setUser(User user)
              {
                  this.user=user;
              }
              //必需實現(xiàn)的方法
              public Object invoke(MethodInvocation invocation) throws Throwable
              {
                  String methodName=invocation.getMethod().getName();
                  if(!user.equals("admin) && !user.equals("registedUser"))
                   {
                          System.out.println("您無權查看");
                          return null;
                     }
                  else if(user.equals("registedUser") && methodName.equals("modify))
                  {
                          System.out.println("您不是管理員,無權修改");
                          return null;
                   }
                   else
                    {
                          return invocation.proceed();
                      }
          }

          4.spring 配置文件
            //1.配置目標bean
          <bean id="serviceTarget" class="com.lhb.TestServiceImpl"/>
             //2.配置攔截器
          <bean id="authorityInterceptor" class="com.lhb.AuthorityInterceptor">
              <property name="user" value="admin"/>
          </bean>
              //3.配置代理工廠Bean,產(chǎn)生aop代理
          <bean id="service" class="org.springframework.aop.framework.ProxyFactoryBean">
              //4.指定aop代理所實現(xiàn)的接口
              <property name="proxyInterfaces" value="com.lin.TestService"/>
              //5.指定aop代理所代理的目標bean
              <property name="target" ref="serviceTarget"/>
              //6.指定aop代理所需要的攔截器列表
              <property name="interceptorNames">
                      <list>
                              <value>authorityInterceptor</value>
                      </list>
                </property>
          </bean>
          以上配置中目標bean被暴露在容器中,可以被 客房端代碼直接訪問,所以將目標bean定義成代理工廠的嵌套bean:
          配置攔截器
          <bean id="authorityInterceptor" class="com.lhb.AuthorityInterceptor">
              <property name="user" value="admin"/>
          </bean>
          .配置攔截器
          <bean id="authorityInterceptor" class="com.lhb.AuthorityInterceptor">
              <property name="user" value="admin"/>
          </bean>
          配置代理工廠Bean,產(chǎn)生aop代理
          <bean id="service" class="org.springframework.aop.framework.ProxyFactoryBean">
              //4.指定aop代理所實現(xiàn)的接口
              <property name="proxyInterfaces" value="com.lin.TestService"/>
              //5.指定aop代理所代理的目標bean
              <property name="target">
                      //以嵌套bean的形式定義目標bean,避免客戶端直接訪問目標bean
                      <bean class="com.lin.TestServiceImpl">
              </proterty>
              //6.指定aop代理所需要的攔截器列表
              <property name="interceptorNames">
                      <list>
                              <value>authorityInterceptor</value>
                      </list>
                </property>
          </bean>
          posted on 2008-05-17 22:53 長春語林科技 閱讀(2298) 評論(0)  編輯  收藏 所屬分類: spring
          <2008年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

           

          長春語林科技歡迎您!

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 枞阳县| 克东县| 雅安市| 晴隆县| 普宁市| 成武县| 晋宁县| 晋州市| 隆尧县| 寻甸| 柯坪县| 甘孜县| 新泰市| 方正县| 故城县| 巧家县| 武义县| 无锡市| 同心县| 新建县| 巴马| 漳州市| 昌平区| 确山县| 叶城县| 渑池县| 莫力| 老河口市| 新河县| 汪清县| 麻城市| 泸西县| 屯门区| 台东市| 定兴县| 司法| 台中县| 玛曲县| 涪陵区| 文登市| 常熟市|