Ioc

作者: 我该怎么取id | 来源:发表于2019-04-18 14:32 被阅读0次

      1.AOP的实现:1.1配置文件的形式实现的。

        实现核心业务和辅助功能的交织:

      目的是为了将核心业务与辅助业务分开

      步骤: 1.定义好辅助功能的切面类,以及核心功能业务类。

              2.通过ApplicationContext.xml配置切面与业务方法的交织

      (spring支持方法的切入)

      3. 配置切入点

                        需要一个代理对象实现辅助功能的调用,

    AOP是通过动态代理的形式实现切面的  

        <aop:config proxy-target-class="true">

        <aop:aspect id="" ref="">

              <aop:pointcut id="display" expression="execution(* service.StudentService.display(..))"/>

            配置具体的通知,辅助功能的方法

      <aop:before method="before" pointcut-ref="display"/>

      <aop:after method="after" pointcut-ref="display"/>

                                  <aop:after-returning method="returnning" pointcut-ref="display" returning="o"/>

                                  <aop:after-throwing method="exception" pointcut-ref="display"/>

        </aop:aspect>

    </aop:conig>

    1.2注解的形式实现AOP:

              1.定义好辅助功能的切面类,以及核心功能业务类。 

              2.开启注解,并使用aspectj的动态代理的形式实现  

            <context:component-scan base-package="AOP"></context:component-scan>

    <!--指明使用aspectj-autoproxy动态代理的形式实现-->

            <aop:aspectj-autoproxy proxy-target-class="true"/>

    3.对应的切面类写明注解:

      @Aspect

    @Component

    public class WatchAOP {

        @Pointcut("execution(* service.StudentService.display(..))")

        public  void  myProject(){}

      @Before("myProject()")

        public  void  before(){

            System.out.println("核心业务方法调用之前");

            //日志功能,性能统计。。。。

        };

      @After("myProject()")

        public  void  after(){

            System.out.println("核心业务方法调用之后");

        };

      @AfterThrowing("myProject()")

        public  void  exception(){

            System.out.println("核心业务方法出现异常");

        };

      @AfterReturning(value = "myProject()",returning = "o")

      public  void  returnning(JoinPoint point,Object o){

            System.out.println("方法已经执行完成,核心方法的类名是:"+point.getTarget().getClass().getName()+"核心业务的方法是"+point.getSignature().getName()+"方法的返回值是:"+o);

        };

        };

    相关文章

      网友评论

          本文标题:Ioc

          本文链接:https://www.haomeiwen.com/subject/gyxtgqtx.html