最近在项目的开发中遇到了一个问题,就是服务提供方使用@service发布dubbo服务时候,服务消费方@Reference无法注入bean导致空指针异常的问题。分析原因为@service注解并没有将服务发布出去而导致的。所以解决问题的关键点在于如何将服务正确的发布出去。事务采用了aop技术,而aop ...
分类:
其他好文 时间:
2018-06-07 14:28:12
阅读次数:
2419
1. 使用动态代理实现AOP JoinPoint 连接点 指在哪个点触发 某个具体的方法前或者方法后或者发生异常时。 切面: 需要执行的方法的类 @AspectJ 通知:需要执行的方法 在方法被调用之前需要生成动态代理对象 ...
分类:
编程语言 时间:
2018-06-04 11:27:19
阅读次数:
205
AspectJ支持5种类型的通知注解: @Before:前置通知,在方法执行之前执行; @After:后置通知,在方法执行之后执行; @AfterRunning:返回通知,在方法返回结果之后执行(因此该通知方法在方法抛出异常时,不能执行); @AfterThrowing:异常通知,在方法抛出异常之后 ...
分类:
编程语言 时间:
2018-06-03 19:43:04
阅读次数:
247
前言 在单体架构的秒杀活动中,为了减轻DB层的压力,这里我们采用了Lock锁来实现秒杀用户排队抢购。然而很不幸的是尽管使用了锁,但是测试过程中仍然会超卖,执行了N多次发现依然有问题。输出一下代码吧,可能大家看的比较真切: 代码写在service层,bean默认是单例的,也就是说lock肯定是一个对象 ...
分类:
其他好文 时间:
2018-05-31 10:35:31
阅读次数:
160
AOP:面向切面编程,相对于OOP面向对象的编程 Spring的AOP的存在的目的是为了解耦。AOP可以让一组类共享相同的行为。在OOP中只能通过继承类和实现接口,来使代码的耦合度增强,且类继承只能为单继承,阻碍更多行为添加到一组类上,AOP弥补了OOP的不足。 Sping支持AspectJ的注解式 ...
分类:
编程语言 时间:
2018-05-30 18:15:59
阅读次数:
225
一 . 概述 我们在使用AspectJ的时候定义了五种基本的增强方式. 本节就介绍一下这五种基本的增强方式. 二 ,前置增强 我们使用@Before表示前置通知,表示在连接点方法之前执行. 这个很很好理解. 三,后置通知 后置通知会在方法正常结束之后运行,当我们制定了returning之后,方法的返 ...
分类:
其他好文 时间:
2018-05-28 01:03:42
阅读次数:
182
一 .概述 在上一节之中,我们看到了使用AspectJ处理AOP变得十分简单了. 其核心有两点是需要我们重点注意的: (1)切入点表达式 (2)通知增强的注解 本节,重点说一下切入点表达式的问题. 二 .切入点表达式 切入点表达式重点表示的就是通知到底应该在上面方法上面生效. 因此,切入点表达式的核 ...
分类:
其他好文 时间:
2018-05-27 23:46:20
阅读次数:
294
一. 概述 之前我们介绍了AOP的实现依赖于动态代理,再深一点说,就是创建出一个代理对象才能完成AOP的实现. 因此,我们就能知道了,AOP的核心首要就是创建出动态代理对象. 二 . 前置说明 AOP在spring之中的表现形式是相当多的,如之前的IOC形式,Aspectj的风格,各种xml的形式, ...
分类:
其他好文 时间:
2018-05-27 20:55:59
阅读次数:
184
10.1 产品清单概述 通知(Advice) 前置通知(Before) 后置通知(After) 返回通知(After-returning) 异常通知(After-throwing) 环绕通知(Around) 连接点(Join point) 切点(Poincut) 切面(Aspect) 引入(Intr ...
分类:
编程语言 时间:
2018-05-27 14:49:54
阅读次数:
207
一、Spring 使用 AspectJ 进行 AOP 的开发:注解的方式 1.1 引入相关的jar包 1.2 引入spring的配置文件 1.3 编写目标类 1.4 配置目标类 1.5 开启aop注解的自动代理 1.6 AspectJ 的 AOP 的注解 ● Pointcut:切入点,在类中有很多方 ...
分类:
编程语言 时间:
2018-05-22 19:43:41
阅读次数:
211