spring的ioc和aop的整理(3)

aop,就是面向切面编程。什么是面向切面编程?我没听清楚,也没搞明白。我的理解就是,这个玩意就是一个牧师,可以给一个功能加buff,事前加,事后加,围绕这这事加,事前出问题了加。但是呢,加了buff不意味着人物的属性面板就永久变强了,临时的!临时的!同样呢,一个牧师,不仅能给一个人加buff,她可以给好几个人加。反正我是这么想的,后面怎么样再说。这么讲起来,spring真是一个很好的框架。帮忙创建对象,还给加buff.和hibernate,struts这些框架真不一样。

首先是底层的实现。第一种是jdk代理的,第二种是cglib代理的。不管是哪种代理,都是获取对象,然后加强或者削弱,把处理后的东西传递回来,这样就完成了一次增强。其实我有点搞不懂,里面具体做增强的那个方法是谁执行的?不太理解,本类里面又没有调用,他怎么增强的??????

下面是xml版本的aop实现的步骤和流程。

spring要额外引进一些jar包的首先是对aop的支持的包,然后是AspeetJ的包。这些包的引入。有这个概念就可以了。具体做项目的时候,版本啊,jar包啊,基本是同一的。然后是最激动人心的引入约束的时刻了。同样是对application进行操作,不过这次的约束换一下,我去截个图                                                                                                                                                                   

这样来讲呢就比较清晰了。把具体的约束复制一份过来。

<?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.xsd"> <!-- bean definitions here -->

</beans>

这个约束在context约束的上面一个。到这里约束就写完了。按照惯例,来一个案例。

把类配置到配置文件的方法和ioc的xml配置方法是一样的,同样是把类交给spring管理。切面类,也就是具体做增强的类也需要交给spring管理,需要在bean里面配置一下。在切面类里,写好要做什么增强(把加buff的法术准备好,预留法术位施法)的方法写好。

在配置好bean后,紧接着写aop的配置。要是可以用代码提示就好了。不过还是需要自己先记一下。我就怕记这些,但是越怕的,做了才有意义不是吗?

首先是<aop:config>这个标签。没有具体的作用,起一个标识的作用。然后是<aop:pointcut>,他有个属性叫expression,表达式。这个表达式说明哪些包的哪些类,哪些方法需要增强。这个标签还有个属性叫id,这个属性呢,就比较厉害了,他是后面用来标识的。

<aop:pointcut>有个同级的的标签,<aop:aspect>属性是ref,用来说明具体的切面类,这个切面类在上面配置了,所以下面直接写bean里面的id。<aop:aspect>有个子标签是<aop:xxx>,xxx的意思是自己配置。

到这里,我基本就把aop的第一种配置搞清楚了,果然写下来是很有用的整理方法。第二种配置还没学习,但也快了。大概明天。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值