A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天我们学习了动态代理和SpringAOP,请大家整理:
1 今天讲了几种的代理方式?简单说一说;
2 什么是SpringAOP?聊聊你对AOP的理解
3 注解下使用AOP该怎么做?

6 个回复

倒序浏览
1 今天讲了几种的代理方式?简单说一说;
答:
        方式一:在service里对每个方法都绑定了一个链接,保证sql语句都使用同一个链接对象,然后在方法里进行事务的操作;
        方式二:使用动态代理;提供了service的代理对象,将事务的操作放入增强方法中;不过动态代理和增强的代码还需要自己写;
        方式三:采用AOP技术;在配置文件中进行切面的配置,指定了切入点和通知;省去了态代理的代码;

2 什么是SpringAOP?聊聊你对AOP的理解
答:
        概念:面向切面的编程;切面=切入点(被增强的方法)+通知(增强)
        作用:使用动态代理,在不修改源代码的而基础上进行方法的增强;
        优势:减少代码的重复;提高开发效率;维护方便;
       
3 注解下使用AOP该怎么做?
答:
        xml配置:
                导入约束文件;
                指定创建核心容器要扫描的包:context:component-scan标签;
                开启sop注解支持:aop:aspectj-autoproxy标签;



        通知类:
                类上的注解:
                        @Component:创建该类的bean对象放入核心容器中;
                        @Aspect:说明该类是一个切面类;
                方法上的注解:
                        @Pointcut("execution(表达式)") :配置切入点的方法(切入点id为方法名)
                        @Before("切入点方法名()"):前置通知;
                        @AfterReturning:后置通知;
                        @AfterThrowing:异常通知;
                        @After:最终通知;

                        @Arround:环绕通知;包含了上述的四个通知;
        注:
                注解配置,最终通知会优先于后置通知和异常通知执行,不过在环绕通知里执行顺序正常不变;
回复 使用道具 举报
今天到了Spring第3天,我们学习了动态代理和SpringAOP,请大家整理:
1 今天讲了几种的代理方式?简单说一说;基于接口的代理:
被代理的类必须要实现一个接口;
Proxy.newProxyInstance(被代理对象.getClass().getClassLoader,被代理对象.getClass().getInterface();new InvocationnalHandle()(被增强的))

基于子类的代理:
它是通过子类继承父类来实现代理,所以被代理的类不能是最终类;
Enhancer.create(被代理对象.getClass(),new MethodInterceptor(){intercept})

2 什么是SpringAOP?聊聊你对AOP的理解
先说oop核心思想是封装继承和多态。通过抽取重复代码,实现代码的复用,减少代码的重复编写。oop会建立起一种对象层次结构,这时就需要AOP出场了。
springAoP的实现原理是代理。AOP利用横切的技术,可以解剖封装的数据内部,将影响多各类的公共行为,可以降低程序间的耦合度,有利于未来的维护和操作。AOP把软件分成两部分:核心关注点和横切关注点,拿我们的转账案例来说,核心关注点就是业务层中的调用dao层方法的操作,而横切关注点则是事务相关的那些。横切关注点是和核心关注点没有关系不大的,它们的一个特点是经常发生在核心关注点的多处。比如为了登录功能,注册功能中都有多条SQL语句,它们需要保证事务一致性,就都需要使用到横切关注点。

3 注解下使用AOP该怎么做?
        1.在通知类上使用@Asept注解声明为切面。
        2.在增强的方法上使用注解配置通知:@Before....等。
        3.在spring配置文件中开启spring对注解的支持:<aop:aspectj-autoproxy/>
回复 使用道具 举报
今天我们学习了动态代理和SpringAOP,请大家整理:
1 今天讲了几种的代理方式?简单说一说;
基于接口的动态代理:使用Proxy类中的newProxyInstance方法
基于子类的动态代理:使用Enhancer类中的create方法

2 什么是SpringAOP?聊聊你对AOP的理解
SpringAOP:采用基于JDK动态代理或CGLIB基于子类的动态代理增强对象方法,提供一些通用服务,比如权限认证、日志、事务处理
AOP:面向切面编程 ,表示横向的一种关系,好比一把利刃将封装了属性和方法的对象当作圆柱体剖开,进而把由某些影响了多个类的公共行为封装成的可重用模块切入,从而起到增强作用

3 注解下使用AOP该怎么做?
@EnableAspectJAutoProxy 开启对注解 AOP 的支持
使用@Aspect 注解通知类,声明为切面
使用@Pointcut 注解 切入点
使用@Before、@AfterReturning、@AfterThrowing、@After、@Around注解通知
回复 使用道具 举报
陈鹏涛
1 今天讲了几种的代理方式?简单说一说;
答:
        在service里对每个方法都绑定了一个链接,保证sql语句都使用同一个链接对象,然后在方法里进行事务的操作;
        使用动态代理;提供了service的代理对象,将事务的操作放入增强方法中;不过动态代理和增强的代码还需要自己写;
        采用AOP技术;在配置文件中进行切面的配置,指定了切入点和通知;省去了态代理的代码;

2 什么是SpringAOP?聊聊你对AOP的理解
答:就是使用动态代理的技术,在不修改源码的的基础上进行方法的增强
(面向切面编程)
        
        
3 注解下使用AOP该怎么做?
答:
        xml配置:
                导入约束文件;
                指定创建核心容器要扫描的包:context:component-scan标签;
                开启sop注解支持:aop:aspectj-autoproxy标签;
        通知类:
                类上的注解:
                        @Component:创建该类的bean对象放入核心容器中;
                        @Aspect:说明该类是一个切面类;
                方法上的注解:
                        @Pointcut("execution(表达式)") :配置切入点的方法(切入点id为方法名)
                        @Before("切入点方法名()"):前置通知;
                        @AfterReturning:后置通知;
                        @AfterThrowing:异常通知;
                        @After:最终通知;

                        @Arround:环绕通知;包含了上述的四个通知;
     
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马