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

Spring入门篇

moocer JAVA开发工程师
难度中级
时长 7小时 0分
  • @Spring AOP API: 1、这是Spring1.2历史用法,现在(V4.0)仍然支持; 2、这是SpringAOP基础,不得不了解; 3、现在的用法也是基于历史的,只是更简便了。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • //相关代码——(下): @ConcurrentOperationExecutor.java package com.imooc.aop.schema.advisors; public class ConcurrentOperationExecutor implements Ordered { private static final int DEFAULT_MAX_RETRIES = 2; private int maxRetries = DEFAULT_MAX_RETRIES; private int order = 1; public void setMaxRetries(int maxRetries) {...} public int getOrder() {...} public void setOrder(int order) {...} public Object doConcurrentOperation(ProceedingJoinPoint pjp) throws Throwable { int numAttempts = 0; PessimisticLockingFailureException lockFailureException; do { numAttempts++; syso("Try times : " + numAttempts); try { return pjp.proceed(); } catch (PessimisticLockingFailureException ex) { lockFailureException = ex; } } while (numAttempts <= this.maxRetries); syson("Try error : " + numAttempts); throw lockFailureException; } } //输出: 第一波... Try times : 1 InvokeService ...... 第二波... Try times : 1 Try times : 2 Try times : 3 Try times : 4 Try error : 4
    查看全部
    0 采集 收起 来源:Advisors

    2018-03-22

  • //相关代码——(中): @spring-aop-schema-advisors.xml <?xml version="1.0" encoding="UTF-8"?> <beans ...context、aop...> <context:component-scan base-package="com.imooc.aop.schema"></context:component-scan> <aop:config> <!-- 在测试时,如引入aop:pointcut时,如果还有aop:around与pointcut关联,则先执行around method,在method碰到pjp.proceed()时,就会执行测试的时候的方法。 --> <!-- ref:引用切入点的类——bean --> <aop:aspect id="concurrentOperationRetry" ref="concurrentOperationExecutor"> <!-- expression:切入到哪个类、方法 --> <aop:pointcut expression="execution(* com.imooc.aop.schema.advisors.service.*.*(..))" id="idempotentOperation"></aop:pointcut> <!-- pointcut-ref:在哪个切入点做环绕通知;method:切入点的类方法 --> <aop:around method="doConcurrentOperation" pointcut-ref="idempotentOperation"></aop:around> </aop:aspect> </aop:config> <bean id="concurrentOperationExecutor" class="com.imooc.aop.schema.advisors.ConcurrentOperationExecutor"> <property name="maxRetries" value="3"></property> <property name="order" value="100"></property> </bean> </beans>
    查看全部
    0 采集 收起 来源:Advisors

    2018-03-22

  • @Advisors注意事项 //相关代码——(上): @InvokeService.java package com.imooc.aop.schema.advisors.service; @Service public class InvokeService { public void invoke() { System.out.println("InvokeService ......"); } public void invokeException() { throw new PessimisticLockingFailureException(""); } } @TestAOPSchemaAdvisors.java @RunWith(BlockJUnit4ClassRunner.class) public class TestAOPSchemaAdvisors extends UnitTestBase{ public TestAOPSchemaAdvisors(){ super("classpath:spring-aop-schema-advisors.xml"); } @Test public void testSave() { InvokeService service = super.getBean("invokeService"); System.out.println("第一波..."); service.invoke(); System.out.println("第二波..."); service.invokeException(); } } 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
    0 采集 收起 来源:Advisors

    2018-03-22

  • @所有基于配置文件的aspect,都只支持单例模式 //相关代码: @TestAOPSchemaAdvice.java @RunWith(BlockJUnit4ClassRunner.class) public class TestAOPSchemaAdvice extends UnitTestBase{ public TestAOPSchemaAdvice(){ super("classpath:spring-aop-schema-advice.xml"); } @Test public void testFit(){ Fit fit=super.getBean("aspectBiz"); fit.filter(); } } @UnitTestBase.java //省略... @Fit.java package com.imooc.aop.schema.advice; public interface Fit { void filter(); } @FitImpl.java package com.imooc.aop.schema.advice; public class FitImpl implements Fit { public void filter() { System.out.println("FitImpl filter."); } } @spring-aop-schema-advice.xml <aop:config> <aop:aspect ...> <aop:declare-parents types-matching="com.imooc.aop.schema.advice.biz.*(+)" implement-interface="com.imooc.aop.schema.advice.Fit" default-impl="com.imooc.aop.schema.advice.FitImpl" ></aop:declare> </aop:aspect> </aop:config> //输出: FitImpl filter. 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
    0 采集 收起 来源:Introductions应用

    2018-03-22

  • @Introductions(简介): 1、简介允许一个切面声明一个实现指定接口的通知对象,并且提供了一个接口实现类来代表这些对象。 2、由 <aop:aspect>中的<aop:declare-parents>元素声明该元素用于声明所匹配的类型拥有一个新的parent。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
    0 采集 收起 来源:Introductions应用

    2018-03-22

  • 构造注入
    查看全部
    0 采集 收起 来源:Spring注入方式

    2016-04-19

  • Spring的常用注入方式
    查看全部
    0 采集 收起 来源:Spring注入方式

    2016-04-19

  • @Advice parameters——(Xml代码) 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • @Advice parameters——(Java代码) 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • @声明around advice(环绕通知)的方式 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • @声明after (finally) advice(后通知)的方式 //相关代码——(下下): public class MoocAspect { public Object aroundInit(ProceedingJoinPoint pjp,String bizName,int times){ System.out.println(bizName+" "+times); Object obj=null; try { syso("MoocAspect aroundInit 1."); obj=pjp.proceed(); System.out.println("MoocAspect aroundInit 2."); } catch (Throwable e) { e.printStackTrace(); } return obj; } } //输出(无异常): MoocAspect before. AspectBiz biz. MoocAspect afterReturning. MoocAspect after. //输出(有异常): MoocAspect before. AspectBiz biz. MoocAspect afterThrowing. MoocAspect after. //输出(无异常-环绕通知): MoocAspect before. MoocAspect around 1. AspectBiz biz. MoocAspect around 2. MoocAspect after. MoocAspect afterReturning. //输出(biz.init("mooc", 3);): MoocAspect before. MoocAspect around 1. mooc 3 MoocAspect aroundInit 1. AspectBiz init:mooc 3 MoocAspect aroundInit 2. MoocAspect around 2. MoocAspect after. MoocAspect afterReturning. 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • @声明after throwing advice(抛出异常后通知)的两种方式 //相关代码——(下): <aop:config> <aop:aspect id="moocAspectAOP" ref="moocAspect"> <!-- 起到切入(关联)作用 --> <aop:pointcut expression="execution(* com.imooc.aop.schema.advice.biz.*Biz.*(..))" id="moocPiontcut"></aop:pointcut> <!-- 在aop:pointcut执行之前会执行前置通知 --> <aop:before method="before" pointcut-ref="moocPiontcut"></aop:before> <!-- 在aop:pointcut执行之后会执行返回后通知 --> <aop:after-returning method="afterReturning" pointcut-ref="moocPiontcut"></aop:after> <!-- 在aop:pointcut执行碰到异常会执行该通知。如果有异常抛出,则after returning advice会失效。 --> <aop:after-throwing method="afterThrowing" pointcut-ref="moocPiontcut"></aop:after> <!-- 无论是否有异常,结束后都会加上这条(finally) --> <aop:after method="after" pointcut-ref="moocPiontcut"></aop:after> <aop:around method="around" pointcut-ref="moocPiontcut"></aop:around> <!-- 参数名称要一致--> <aop:around method="aroundInit" pointcut="execution(* com.imooc.aop.schema.advice.biz.AspectBiz.init(String,int)) and args(bizName,times)"/> </aop:aspect> </aop:config> </beans>
    查看全部
  • @声明after returning advice(返回后通知)的两种方式 //相关代码——(中): public class MoocAspect { public Object around(ProceedingJoinPoint pjp){ Object obj=null; try { syso("MoocAspect around 1."); obj=pjp.proceed(); syso("MoocAspect around 2."); } catch (Throwable e) { e.printStackTrace(); } return obj; } } @spring-aop-schema-advice.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd"> <bean id="moocAspect" class="com.imooc.aop.schema.advice.MoocAspect"></bean> <bean id="aspectBiz" class="com.imooc.aop.schema.advice.biz.AspectBiz"></bean>
    查看全部
  • Schema-based AOP 基于配置的AOP
    查看全部
    0 采集 收起 来源:配置切面aspect

    2016-04-19

举报

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

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