<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 一,一些基本概念 Spring除了IOC容器之外,另一大核心就是AOP了。Spring 中AOP是通過AspectJ來實現的。 ![](https://box.kancloud.cn/2016-03-02_56d6638011222.jpg) 首先來看下AOP 的相關概念: 1,Aspect 對橫切性關注點的模塊化。 2,Advice 對橫切性關注點的具體實現 3,Cross Cutting Concern 一種獨立服務,它會遍布在系統的處理流程之中。 4,PointCut 定義了Advice應用到哪些JoinPoint上,對Spring來說是方法的調用 5,Weave 將Advice應用到Target Object上的過程叫做織入,Spring支持的是動態織入。 6,Target Objet Advice被應用的對象 7,Proxy Spring AOP 默認使用JDK的動態代理,它的代理是運行時創建的,也可以使用CGLIB代理 8,Introduction 可以動態的為類添加方法。 9,JointPoint Advice在應用程序上執行的時機,而spring只支持方法JointPoint,這點也可以使屬性修改 ## 二,采用Annotation方式實現AOP ###1,引入AspectJ的Jar包: ![](https://box.kancloud.cn/2016-03-02_56d6638021b06.jpg) ###2,定義Aspect 將橫切點——檢查安全性模塊化,寫入SecurityHandler類中。 ###3,采用注解指定SecurityHandler為Aspect ![](https://box.kancloud.cn/2016-03-02_56d663802fe74.jpg) ###4,采用注解定義Advice和Pointcut ~~~ @Aspect public class SecurityHandler { /*PointCut定義了Advice應用到哪些JointPoint上,對Spring來說是方法的調用 * 定義Pointcut,Pointcut的名稱為addMethod(),此方法沒有返回值和參數 * 該方法就是一個標識,不進行調用 * */ @Pointcut("execution(* add*(..))") private void addMethod(){ } /* * 定義Advice(對橫切性關注點的具體實現),表示我們的Advice應用到哪些pointcut訂閱的Joinpoint上 * */ @Before("addMethod()") private void checkSecurity(){ //TODO:放入檢查安全性的方法 System.out.println("--------checkSecurity------------"); } } ~~~ ###5,啟用AspectJ對Annotation的支持,并且將目標類和Aspect類配置到IoC容器中 ![](https://box.kancloud.cn/2016-03-02_56d663803ec31.jpg) ## 三,采用靜態配置文件方式實現AOP 對于前面的SecurityHandler類,只留下Advice的方法體: ~~~ public class SecurityHandler { private void checkSecurity(){ //TODO:Some things System.out.println("--------checkSecurity------------"); } } ~~~ 將應用時機,應用時機與具體實現的關聯放到配置文件中: ![](https://box.kancloud.cn/2016-03-02_56d663804ef20.jpg) 概念好多,但是總的來說,就兩方面,一個是我要切入的方法,一個是我要定義在什么時候切入這個方法,放到類上說,就是把切面對象的方法應用到目標對象。
                  <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>

                              哎呀哎呀视频在线观看