发表于: 2018-01-31 23:10:30

1 674


一、今天完成的事情


1、完成难度星级的循环输出



2、两个网页的项目合并并且打包上传到服务器成功运行


t 10页面


t 11页面



3、复习了springAOP的相关知识,为小课堂做准备,知识多集中于入门的基础部分,因为会操作和能讲明白之间还有一段距离,衍生出来的知识只能照着教程用,不能很好的表达出来


  1、初看aop,上来就是一大堆术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等。一下子让人不知所措,心想着:怪不得师兄和我说aop要后面才学。当我看进去以后,我才发现:它就是一些java基础上的朴实无华的应用,包括ioc,包括许许多多这样的名词,都是万变不离其宗而已。

  2.为什么用aop

  1、就是为了方便,用了aop能让你少写很多代码。


  2、就是为了更清晰的逻辑,可以让你的业务逻辑去关注自己本身的业务,而不去想一些其他的事情,这些其他的事情包括:安全,事物,日志等。


    3、就是为了降低之前传统面向对象中采用继承纵向抽取增强方法导致的耦合度过高的问题



 3.那些aop的术语(用自己的话来理解)

 

    1.通知(Advice)

  就是你想要的功能,也就是上面说的 安全,事物,日志等。你给先定义好把,然后在想用的地方用一下。

    2.连接点(JoinPoint)

  就是spring允许你使用通知的地方,基本每个方法的前,后(两者都有也行),或抛出异常时都可以是连接点,spring只支持方法连接点.其他如aspectJ还可以让你在构造器或属性注入时都行,不过那不是主要关注的(几乎用不到),我们只要记住,和方法有关的前前后后(抛出异常的点),都是连接点。

    3.切入点(Pointcut)

  上面说的连接点的基础上,来定义切入点,你的一个类里,有15个方法,那就有几十个连接点了,但是你并不想在所有方法附近都使用通知,你只想让其中的几个,在调用这几个方法之前,之后或者抛出异常时干点什么,那么就用切点来定义这几个方法,让切点来筛选连接点,选中那几个你想要的方法。

    4.切面(Aspect)

  切面是通知和切入点的结合。现在可以发现,其实没连接点什么事情,连接点就是为了让你好理解切点搞出来的术语,明白这个概念就行了。通知说明了干什么和什么时候干(什么时候通过方法名中的before,after,around等就能知道),而切入点说明了在哪干(指定到底是哪个方法),这就是一个完整的切面定义。

    5.引介(introduction)

  允许我们向现有的类添加新方法属性。

    6.目标(target)

  引入中所提到的目标类,也就是要被通知的对象,也就是真正的业务逻辑,他可以在毫不知情的情况下,被咱们织入切面。而自己专注于业务本身的逻辑。

    7.代理(proxy)

  怎么实现整套aop机制的,都是通过代理,大体意思就是目标类被增强后产生的代理类

    8.织入(weaving)

  把切面应用到目标对象来创建新的代理对象的过程。有3种方式,spring采用的是运行时,为什么是运行时,后面解释。

  其中的关键就是:切点定义了哪些连接点会得到通知



springAOP简单归纳总结及基本操作步骤:

1、扩展功能不依靠修改源代码来实现

2、采取横向抽取机制,规避了传统面向对象中纵向继承体系的重复性代码



连接点:类里面的方法可以被增强,这些方法可以被增强的地方称为连接点

切入点(重点)在类里面的方法都可以被增强,实际操作中,我们只是增强了其中某些需要被增强的方法,这些实际被我们增强的方法成为切点

通知(重点):增强方法的逻辑。   分为前置,后置,环绕,最终,异常

前置通知:方法之前执行

后置通知:方法之后执行

异常通知:方法出现异常时执行

最终通知:在后置之后执行

环绕通知:在方法之前和之后执行

切面(重点) 把增强应用到切点上的过程

引介:实在不能理解就不用管了

目标对象:增强的方法所在的那个类

织入:把增强应用到目标类的过程

代理:目标类被增强后产生的代理类



  spring的AOP操作

1、在sring里面进行aop操作,使用aspectJ来实现

aspectJ本身是一个单独的面向切面的框架,里面定义了AOP语法,不是spring的一部分,和spring协同完成springAOP的操作

2、使用aspectJ来实现springAOP的操作有两种方式

1、xml配置文件

2、aspectJ注解

使用表达式来配置切入点

常用的表达式

execution(<访问修饰符>?<返回类型><方法名>(<参数>)<异常>)

1、execution(* com.ptt.aop.Book.add(..))

2、execution(* com.ptt.aop.Book.*(..))

3、execution(* *.*(..))

4、匹配所有save开头的方法  execution(* save*(..))

决定那个方法被增强

配置文件步骤

1、定义目标类和增强类

2、使用spring配置两个类的对象

3、配置aop的操作 

<aop:config>

//配置切入点(表达式、切点名称)

//配置切面(选择增强类、 指定增强类型并决定该类型用于哪个切点)

</aop:config>

注解步骤

1、创建2个类的对象

2、在spring核心配置文件中,开启aop扫描操作

3、在增强的类上面配置注解




二、明日计划完成的事情


1、完成小课堂ppt的制作


2、完成小课堂的演讲


3、继续任务的进度,争取按时完成任务四



三、遇到的问题


1、上传到服务器的时候遇到的问题,查看日志以后从网上找到了解决办法


将途中鼠标选中的主机名添加进服务器etc/host配置文件中即可解决



四、收获


如上所述


task4开始时间:2017.01.29

预计demo时间:2018.02.02








http://task.ptteng.com/zentao/project-task-488-unclosed.html



返回列表 返回列表
评论

    分享到