<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 一、概述。 AOP大家都知道切面編程,在Spring中annotation可以實現簡單的AOP列子。下面還未大家介紹幾個概念: Aspect 對橫切性關注點的模塊化。 Advice 對橫切性關注點的具體實現。 Pointcut 它定義了Advice應用到哪些JoinPoint上,對Spring來說是方法調用。 JoinPoint Advice在應用程序上執行的點或時機,Spring只支持方法的JoinPoint,這個點也可以使屬性修改,如:Aspecj可以支持。 Weave 將Advice應用到Target Object上的過程叫織入,Spring支持的是動態織入。 Target Object Advice被應用的對象。 Proxy Spring AOP默認使用JDK的動態代理,它的代理是運行時創建,也可以使用CGLIB代理。 ## 二、代碼演示。 為了實現使用annotation實現簡單AOP我們還得加入下面幾個包: SPRING_HOME/lib/aspectj/*.jar 目錄結構: ![](https://box.kancloud.cn/2016-02-22_56caddfbe55ec.jpg) UserManager.java和UserManagerImpl.java代碼參照 [http://blog.csdn.net/gwblue/article/details/39668211](http://blog.csdn.net/gwblue/article/details/39668211) 中的UserManager.java和方法二的UserManagerImpl.java SecurityHandler.java ~~~ package com.tgb.spring; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; @Aspect public class SecurityHandler{ /** *確定需要使用checkSecurity使用方法的范圍 */ @Pointcut("execution(* add*(..))") private void addAddMethod(){} /** *Before是指在執行方法之前運行 *After是只在執行方法之后運行 */ @Before("addAddMethod()") private void checkSecurity(){ System.out.println("checkSecurity"); } } ~~~ Client.java ~~~ package com.tgb.spring; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.tgb.spring.UserManager; public class Client { public static void main(String[] args) { BeanFactory factory=new ClassPathXmlApplicationContext("applicationContext.xml"); UserManager userManager=(UserManager) factory.getBean("userManager"); userManager.addUser("張三", "123"); userManager.delUser(1); } } ~~~ applcationContext.xml ~~~ <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <!-- 啟用AspectJ --> <aop:aspectj-autoproxy/> <bean id="userManager" class="com.tgb.spring.UserManagerImpl" /> <bean id="securityHandler" class="com.tgb.spring.SecurityHandler"/> </beans> ~~~ 效果圖: ![](https://box.kancloud.cn/2016-02-22_56caddfc08eee.jpg) ## 三、綜述。 利用annotation方式簡單的實現了AOP,注解是一種侵入性比較強的AOP實現方式,它的優點是讓開發者更加方便的使用AOP。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看