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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                Spring AOP是基于代理的。 在編寫自己的切面或使用Spring Framework提供的任何基于Spring AOP的切面之前,理解代理的本質是非常重要的。 考慮第一種場景,很普通的,沒有被代理的對象: ~~~java public class SimplePojo implements Pojo { public void foo() { // 通過this直接調用對象方法 this.bar(); } public void bar() { //業務邏輯 } } ~~~ 直接調用對象的方法,如下所示: ![直接調用對象方法](https://box.kancloud.cn/a5b9820f6966a822e41d142e3e7f6d13_468x190.png) ~~~java public class Main { public static void main(String[] args) { Pojo pojo = new SimplePojo(); // 直接調用pojo對象的方法 pojo.foo(); } } ~~~ 如果是代理對象調用,會有一些變化,如下: ![代理對象調用](https://box.kancloud.cn/5a57c069072c576c4cdd6792f9723230_508x192.png) ~~~java public class Main { public static void main(String[] args) { ProxyFactory factory = new ProxyFactory(new SimplePojo()); factory.addInterface(Pojo.class); factory.addAdvice(new RetryAdvice()); Pojo pojo = (Pojo) factory.getProxy(); // 代理對象的方法調用 pojo.foo(); } } ~~~ 在`Main`類的`main`方法中引用了代理對象.代理對象方法的調用會委托所有的攔截器(建議的接入點)執行. 但是,如果直接引用的目標對象自身調用,則不會被代理,如`this.bar()`是目標對象的執行,而不是代理對象. 最好重構代碼,不要發生自調用.或者在邏輯內使用spring aop,最好別這么用,耦合太嚴重 ~~~java public class SimplePojo implements Pojo { public void foo() { // 調用的是代理對象方法,但是這種寫法耦合嚴重 ((Pojo) AopContext.currentProxy()).bar(); } public void bar() { // some logic... } } ~~~ 而且在獲取代理對象時,需要額外的配置 ~~~java public class Main { public static void main(String[] args) { ProxyFactory factory = new ProxyFactory(new SimplePojo()); factory.adddInterface(Pojo.class); factory.addAdvice(new RetryAdvice()); factory.setExposeProxy(true); Pojo pojo = (Pojo) factory.getProxy(); // this is a method call on the proxy! pojo.foo(); } } ~~~ 最后,記住,spring 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>

                              哎呀哎呀视频在线观看