Java Spring AOP

AOP:Aspect Oriented Programming 面向切面编程,4) AOP采取横向抽取机制,主要用于事务管理、性能监视、安全检查、缓存 、日志。

AspectJ是一个基于Java语言的AOP框架

AOP实现原理
1.jdk动态代理Proxy实现:需要接口+实现类
2.cglib包:只需要实现类

概念描述
target目标类,需要被代理的类
Joinpoint连接点,可以被拦截的方法
PointCut已经被增强的连接点
advice通知增强代码
Weaving织入,把增强代码advice应用到target上
proxy代理类
aspect切面,pointcut和advice的结合

例子:
相关包
spring-framework-3.0.2.RELEASE-dependencies\org.aspectj\com.springsource.org.aspectj.weaver\1.6.8.RELEASE

xml配置AOP

<beans>
    <!--  配置UserService,和AOP无关,普通注入-->
    <bean id="userService" class="UserServiceImpl"></bean>

    <!-- 配置切面对象,advice-->
    <bean id="myAspect" class="MyAspect"></bean>

    <!-- 配置 aop -->
    <aop:config>
        <aop:aspect ref="myAspect"><!-- aop:指定切面-->
            <!--定义一个切入点-->
            <aop:pointcut id="myPointcut" expression="execution(* com.gyf.service.UserServiceImpl.*(..))"/>
            <!-- 配置前置通知...-->
            <aop:before method="myBefore" pointcut-ref="myPointcut" />
        </aop:aspect>
    </aop:config>
</beans>

注解配置AOP
bean.xml配置

<!--扫描注解-->
<context:component-scan base-package="demo"/>
<!--AOP注解生效-->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>

@Service("userService")//替代xml里的bean
public class UserServiceImpl implements IUserService{}

@Component//替代xml里的bean
@Aspect//替代<aop:config><aop:aspect ref="myAscpect">
public class MyAspect{}

@Before("execution(* demo.UserServiceImpl.*(..))")//替代<aop:pointcut>
public void myBefore(JoinPoint joinPoint){}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值