<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] # 環境搭建 * AspectJ:java社區最完整最流行的AOP框架 * 在spring2.0以上版本,可以使用基于AspectJ注解或基于XML配置的AOP 使用AspectJ注解,必須在classpath下包含AspectJ類庫:aopalliance.jar, aspectj.weaver.jar和spring-aspects.jar * 將aop Schema添加到`<beans>`根元素中 * 要在spring IOC容器中啟用AspectJ注解支持,只要在Bean配置文件中定義一個空的XML元素`<aop:aspectj-autoproxy />` * 當spring ioc容器偵測到Bean配置文件中`<aop:aspectj-autoproxy>`元素時,會自動為與AspectJ切面匹配的Bean創建代理 # 用AspectJ注解聲明切面 * 要在spring中聲明AspectJ切面,只需要在IOC容器中將切面聲明為Bean實例.當在spring ioc容器中初始化AspectJ切面之后,spring ioc容器中初始化AspectJ切面之后,spring ioc容器就會為哪些與AspectJ切面相匹配的Bean創建代理 * 在AspectJ注解中,切面只有一個帶注解的@Aspect注解的java類 * 通知是標注有某種注解的簡單的java方法 # 5種通知注解 - @Before:前置通知,在方法執行之前執行 - @After:后置通知,在方法執行之后通知 - @AfterReturning:返回通知,在方法返回結果之后通知 - @AfterThrowing:異常通知,在方法拋出異常之后 - @Around:環繞通知,圍繞方法執行 # 注意 今天在學習spring aop中的動態代理時,碰到了一個類型轉換的問題: ~~~ Java.lang.ClassCastException: com.sun.proxy.$Proxy8 cannot be cast to com.bjsxt.service.UserServiceImpl01_AOP. ~~~ 首先介紹一下spring的動態代理。 spring使用的動態代理有兩種:JDK Proxy 和CGLIB。使用前者必須實現至少一個接口才能實現對方法的攔截。使用后者需要兩個jar包:asm.jar和cglib.jar,并修改spring配置文件。 我在測試時使用了JDK Proxy,經過查找資料找到了問題的原因。下面是我的測試用例: ~~~ ApplicationContext ac = new ClassPathXmlApplicationContext("./com/bjsxt/springconfig/annotation_01_AOP.xml"); UserServiceImpl01_AOP userService =(UserServiceImpl01_AOP)ac.getBean("userServiceImpl01_AOP"); userService.method3(); ~~~ 原因:強轉部分即為報錯的根源。不能用接口的實現類(UserServiceImpl01_AOP)來轉換Proxy的實現類,它們是同級,應該用共同的接口來轉換。將強轉代碼修改: ~~~ UserService01_AOP userService = (UserService01_AOP)ac.getBean("userServiceImpl01_AOP");//UserService01_AOP是接口 ~~~ 修改之后,程序運行正常。 讀者可以了解一下JDK Proxy的工作原理,然后會很容易理解這個錯誤出現的原因
                  <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>

                              哎呀哎呀视频在线观看