第四周周报

AOP:面向方面编程

一个普通的类        -->            有特定功能的类

a.继承类    b.实现接口    c.注解

public class MyFilter extends/implements Xx

{

}

public class Xxx

{

        @Test

        a();

}

类      -->   “通知” :实现接口

前置通知实现步骤:

a.jar

                 aopaliance.jar

                aspectjweaver.jar

b.配置


c.编写

            aop:每当之前add()之前 自动执行一个方法log();

            add();    业务方法(IStudentService)

            log();    自动执行的通知,即aop前置通知

配置前置通知:



如果出现异常:类似java.lang.NoClassDefFoundError:org/apache/commons/pool/impl/GenericObjectPool

则说明缺少jar包


后置通知:

a.通知类,普通实现接口

b.业务类,业务方法

                StudentServiceImpl中的addStudent()

c.配置:

               将业务类,通知纳入springIOC容器

               定义切入点(一端),定义通知类(另一端),通过pointcut-ref将两端连接起来


异常通知:

                根据异常通知接口的定义可以发现,异常通知的实现类必须编写以下方法:

         public  void  afterThrowing([Method,args,target],ThrowableSubclass):

               a.public void  afterThrowing(Method,args,target,ThrowableSubclass)

               b.public void  afterThrowing(ThrowableSubclass)

环绕通知:

            在目标方法的前后,异常发生时,最终在各个地方都可以进行的通知,最强大的一个通知;可以获取目标方法的全部控制权(目标方法是否执行,执行之前,执行之后,参数,返回值等)。



        在使用环绕通知时,目标方法的一切信息都可以通过invocation参数获取到。

        环绕通知底层是通过拦截器实现的。


通过实现注解实现通知,aop

a.jar

           与实现接口的方式相同

b.配置

            将业务类,通知纳入springIOC容器

            开启注解对AOP的支持<aop:aspectj-autoproxy></aop:aspectj-autopeoxy>

            业务类 addStudent-通知

c.编写

            通知:

            @Aspect        //声明该类是一个通知

            public class LogBeforeAnnocation{

}

      注意:通过注解的形式将对象添加到ioc容器时,需要设置扫描器

      扫描器会将指定的包中的   @Componet  @Service  @Respository  @Controller修饰的类产生的对象增加到IOC容器中

    

      @Aspect不需要加入扫描器,只需要开启即可:<aop:aspectj-autoproxy></aop:aspectj-autoproxy>

       通过注解形式实现的aop,如果想获取目标对象的一些参数,则需要使用一个对象

        @AfterReturning(pointcut="execution(public *addStudent(..))",returning="returningValue")

        public void myAfter(JoinPoint jp,Object returningValue){//returningValue是返回值,但需要告诉spring

        System.out.println("返回值:"+returningValue);

}

注解形式实现aop时,通知的方法的参数不能多,少


通过配置将类-->通知

基于Schema配置

类似与实现接口的方式

接口方式通知:public class LogAfter implements AfterReturningAdvice

Schema方式通知:public class LogAfter implements AfterReturningAdvice

Schema方式通知:

            a.编写一个普通类 pubilc class LogAfter{}

            b.将该类通过配置,转为一个“通知”

将准备转为通知的类纳入ioc容器

如果要获取目标对象信息:

注解,schema:JoinPoint

接口:Method method,Object[] args,Object target

schem形式和注解形式相似,不同之处:注解形式使用了注册@After,schema形式进行了多余的配置

注意:环绕通知会返回目标方法的返回值,因此返回值为Object



Spring开发web项目及拆分Spring配置文件

Web项目如何初始化SpringIOC容器:思路:当服务启动时(tomcat),通过监听器将SpringIOC容器初始化一次(该监听器spring-web.jar已经提供)


Spring整合MyBatis



Spring容器初始化I:1.将ioc容器中的所有bean实例化为对象

                                  2.将各个bean依赖的属性值注入进去

                                    new对象            属性赋值

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容

  • 概述 Spring是什么? Spring是一个开源框架,为了解决企业应用开发的复杂性而创建的,但是现在已经不止于企...
    琅筑阅读 1,166评论 2 8
  • 1.IOC:控制反转(DI:依赖注入)对控制反转和依赖注入的理解:image.png 其中原理是利用反射机制调用s...
    值得_e36c阅读 503评论 0 1
  • 工作:思考感悟,学以致用 上周主要工作中是:熟悉之前的分账系统,同时做相应的优化。 有个优化的场景可以记录一下,情...
    ___TheOne___阅读 141评论 0 0
  • 今天内容介绍 Spring框架的IOC基于注解的方式 注解类型 注解生命周期 Spring框架整合JUnit单元测...
  • springAop:面向切面的编程 应用场景:权限控制、事物管理、日志打印等等,就是在不同的方法中重复用到相同的代...
    HJJ_3c00阅读 331评论 0 0