为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
Spring入门篇_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

Spring入门篇

moocer JAVA开发工程师
难度中级
时长 7小时 0分
  • jdk动态代理实现: 当连接点抛出异常后的通知(后置通知) 修改IComponent接口,使其有异常抛出: public interface IComponent{ public void getMoney() throws Throwable; } 修改Component实现类: public class Component implements IComponent{ @Override public void getMoney()throws Throwable{ System.out.println("取到了2000RMB"); //手动抛出异常 throw new Exception("发生异常.."); } } 那么在调用Component中的getMoney()方法的时候就会有异常抛出. //编写异常通知类,实现ThrowsAdvice接口. public class ThrowAdvice implements ThrowsAdvice{ //定义afterThrowing()方法 public void afterThrowing(Throwable throwable){ System.out.println("有异常抛出"); } } 当调用接口的方法时,如果抛出了异常,那么就会调用afterThrowing()方法.
    查看全部
    0 采集 收起 来源:配置切面aspect

    2018-03-22

  • Advice应用(后置通知,遇到异常) 使用jdk动态代理 实现当连接点抛出异常后执行的通知 步骤: 1.设计一个接口 2.编写这个接口的实现 3.编写一个类实现ThrowsAdvice接口,该接口是标签接口,没有任何方法.ThrowsAdvice接口继承AfterAdvice接口,该接口也是标签接口. 4.编写XML配置文件,通过代理来实现AOP前置通知. 5.在测试类中通过getBean()方法获取到代理类,代理类当做被代理类使用并调用接口中声明的方法. 可以在异常通知实现类中定义afterThrowing()方法: afterThrowing([Method],[args],[target],subClasssofThrowable) 方括号的参数表示可以省略.不可少的参数是异常类.而且这个异常类必须是Throwable异常的子类.在执行的过程中会检查是否有该参数类型的异常抛出,如果有就执行方法体.要注意的是异常通知只是通知发生相关异常的程序来执行该方法体的代码,而不是避免异常的抛出. ThrowsAdvice接口继承AfterAdvice接口,AfterAdvice接口又继承Advice接口.
    查看全部
    0 采集 收起 来源:配置切面aspect

    2016-03-11

  • jdk动态代理实现环绕通知: //编写一个环绕通知的类 public class AroundComponentAdvice implements MethodInterceptor{ public Object invoke(MethodInvocation meinvo)throws Throwable{ System.out.println("验证用户"); Object result=null; try{ //此方法会抛出异常 result=meinvo.proceed(); } finally{ System.out.println("记录日志"); } return result; } } 这里调用了proceed()方法,也就是调用了目标对象Component中的getMoney()方法.在这个方法的前后分别增加了验证用户和记录日志的功能. 同样是没修过过的IComponent接口与Component实现类. 修按XML配置文档: <beans..> <bean id="aroundcomponentadvice" class="com.own.AroundComponentAdvice"/> <bean id="component" class="com.own.Component"/> <bean id="proxy" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="proxyInterfaces" value="com.own.IComponent" /> <property name="target" ref="component" /> <property name="interceptorNames"> <list> <value>aroundcomponentadvice</value> </list> </property> </bean> </beans> 测试类一样:获取代理对象 try{ //调用方法 con.getMoney(); } catch(Exception e){ } 控制台显示: 用户验证 取出了2000RMB 记录日志
    查看全部
    0 采集 收起 来源:配置切面aspect

    2018-03-22

  • Advice应用(环绕通知) 使用jdk动态代理 实现环绕通知步骤: 1.设计一个接口 2.编写这个接口的实现 3.编写一个类实现MethodInterceptor接口,在实现接口的invoke()方法中编写环绕通知的业务逻辑代码. 4.编写XML配置文件,通过代理来实现AOP前置通知. 5.在测试类中通过getBean()方法获取到代理类,代理类当做被代理类使用并调用接口中声明的方法. 该接口有一个方法: public Object invoke(MethodInvocation meinvo) throws Throwable; MethodInterceptor接口不是Spring内部的接口.而是AOP Alliance标准所指定的.不过Spring对这个接口有一个具体的实现过程. 环绕通知相当于前置通知和后置通知的结合,不同的是在MethodInterceptor的invoke()方法中,可以自由地使用MethodInvocation提供的proceed()方法来执行目标对象的方法.同时proceed()方法将会返回目标方法执行后的返回结果.
    查看全部
    0 采集 收起 来源:配置切面aspect

    2016-03-11

  • jdk动态代理实现: 当连接点正常返回后的通知(后置通知) 需要实现AfterReturningAdvice接口 public class AfterTrueAdvice implements AfterReturningAdvice{ @Override public void afterReturning(Object object,Method method,Object[] args,Object target){ System.out.println("取钱成功!"); } } 同样是IComponent接口与Component实现类. 在XML配置: <beans..> //前通知 <bean id="beforeadvice" class="com.own.BeforeAdvice"/> //连接点正常返回通知(后通知) <bean id="aftertrueadvice" class="com.own.AfterTrueAdvice" /> //目标对象 <bean id="component" class="com.own.Component"/> <bean id="proxy" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="proxyInterfaces" value="com.own.IComponent" /> <property name="target" ref="component" /> <property name="interceptorNames"> //添加通知 <list> <value>beforeadvice</value> <value>aftertrueadvice</value> </list> </property> </bean> </beans> 测试类中: ApplicationContext context=new...("xxx.xml"); IComponent con=(IComponent)context.getBean("proxy"); con.getMoney(); 控制台显示: 用户验证 取到了2000RMB 取钱成功!
    查看全部
    0 采集 收起 来源:配置切面aspect

    2018-03-22

  • Advice应用(后置通知,正常返回) 使用jdk动态代理 实现当连接点正常返回后执行的通知 步骤: 1.设计一个接口 2.编写这个接口的实现 3.编写一个类实现AfterReturningAdvice接口,在实现接口的afterReturning()方法中编写前置通知的业务逻辑代码. 4.编写XML配置文件,通过代理来实现AOP前置通知. 5.在测试类中通过getBean()方法获取到代理类,代理类当做被代理类使用并调用接口中声明的方法. 该接口有一个public void afterReturning(Object returnValue,Method method,Object[] args, Object target)方法. 其中returnValue参数:目标返回值 method参数:被代理的方法的反射对象 args参数:是被代理方法的参数. target参数:是目标对象,即为哪个对象代理. AfterReturningAdvice接口继承AfterAdvice接口,AfterAdvice接口又继承Advice接口. AfterAdvice、Advice接口都是标识接口.
    查看全部
    0 采集 收起 来源:配置切面aspect

    2016-03-11

  • xml配置文件中配置了一个org.springframework.aop.framework.ProxyFactoryBean类. ProxyFactoryBean是一个代理工厂的泛型类,它可以将任意接口实现代理功能. 该类有三个属性,proxyInterfaces、target、interceptorNames. proxyInterfaces(List类型):指定所要代理的接口,可以是多个接口.该属性是List类型,因此配置时可以使用<list>标签在其下使用<value>或<ref>标签,或直接使用value属性或ref属性配置一个值. target(Object类型):表示代理的目标对象.可以使用ref="目标bean的id"关联,也可以直接使用value="目标的全限类名" interceptorNames(List<String>类型):拦截器的名字,可以用通知充当拦截器.该属性是List类型,因此配置时可以使用<list>标签并在其下使用<value>标签,或直接使用value属性配置一个值.不能使用<ref>标签或ref属性关联拦截器.只能是使用<value>标签或属性,值是拦截器bean的id.
    查看全部
    0 采集 收起 来源:配置切面aspect

    2018-03-22

  • 使用jdk动态代理实现前置通知: public interface IComponent{ public void getMoney(); } public class Component implements IComponent{ public void getMoney(){ System.out.println("取到了2000RMB"); } } public class BeforeAdvice implements MethodBeforeAdvice{ public void before(Method method,Object[] args,Object target)throws Throwable{ System.out.println("用户验证"); } } 配置XML文件 <beans..> <bean id="beforeadvice" class="com.own.BeforeAdvice" /> <bean id="component" class="com.own.Component"/> <bean id="proxy" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="proxyInterfaces" value="com.own.IComponent" /> <property name="target" ref="component" /> <property name="interceptorNames"> <list> <value>beforeadvice</value> </list> </property> </bean> </beans> 在interceptorNames属性中,引用的是通知实体类bean的id,只能用<value>标签来引用,不能使用<ref>标签. 测试类中: IComponent con=(IComponent)context.getBean("proxy"); con.getMoney(); 控制台显示: 用户验证 取到了2000RMB
    查看全部
    0 采集 收起 来源:配置切面aspect

    2018-03-22

  • 传统的AOP支持 不同的AOP框架对AOP的实现方式不同,Spring中用Java程序来编写,独立于任何其他的AOP语言.Spring2.0以前的AOP支持主要是针对不同类型的拦截使用XML配置文件及实现特定的接口通过代理来完成. Advice应用(前置通知) 使用jdk动态代理 实现当连接点执行前的通知 步骤: 1.设计一个接口 2.编写这个接口的实现 3.编写一个类实现MethodBeforeAdvice接口,在实现接口的before()方法中编写前置通知的业务逻辑代码. 4.编写XML配置文件,通过代理来实现AOP前置通知. 5.在测试类中通过getBean()方法获取到代理类,代理类当做被代理类使用并调用接口中声明的方法. 该接口有一个public void before(Method method,Object[] args,Object target)方法. 其中method参数是被代理的方法的反射对象. args参数是被代理方法的参数. target参数是目标对象,即为哪个对象代理. 任何类型的通知都是这5个步骤,区别是实现的接口不同. MethodBeforeAdvice接口继承BeforeAdvice接口,BeforeAdvice接口又继承Advice接口 BeforeAdvice、Advice都是标识接口.
    查看全部
    0 采集 收起 来源:配置切面aspect

    2016-03-11

  • 118
    查看全部
  • 117
    查看全部
  • 115
    查看全部
  • 116
    查看全部
  • 114
    查看全部
  • 113
    查看全部

举报

0/150
提交
取消
课程须知
Java的高级课程,适合对Java基础知识应用自如,并熟悉MVC架构的小伙伴们。如果想成为一名Java工程师,这门课程是一定要学哒。
老师告诉你能学到什么?
掌握依赖注入、IOC和AOP的概念,并能进行简单应用。
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!