发表于: 2018-04-02 22:44:00
2 772
今天完成的事情:
下午回家了,这两天电脑不在身边,用手机写
今天主要做了两件事
一是上午测试昨天写的,虽然写好了但是insert语句插入的对象查询出来字符串都是问号。
使用cmd命令行插入的时候却没有问题。
测试了几个地方:
数据库编码;
表的编码和列的编码;
默认编码;
xml编码;
都是utf8编码格式,上午没找出来是哪里的问题。回去继续找。
二是下午在看spring的aop。
之前写过几个类来测试aop,但是没有成功,记得当时报错是找不到相关定义。
今天仔细看发现之前写的很不全面。
之前只写了一个主类,一个配置类,配置类是为了执行切入方法。这样不规范,也不全面。
aop是面向切面编程,它的切入方法被称作通知。之前写的切入方法实际上就是一种通知。
通俗的讲就是让类专注于自己做的事情,然后把它可能需要附带的操作不让它操作了,通过切点插入进去,在不影响类本身的情况下执行。这样不仅没什么耦合,还可以把重复的繁杂小事通过切面类来归到一起,哪里需要就切到哪里用。配合面向对象的编程达到简洁开发,容易重构,易懂的目的。我是这么理解的。
aop应用的通知有5种:
前置通知
后置通知
返回通知
异常通知
环绕通知
其它通知都是顾名思义,而环绕通知就是包含了被通知的方法,就是切点、主程序,然后在它被调用之前和调用后执行的自定义的方法。
通知通过连接点切入,连接点就是切入通知的点,是能够插入切面的一个点,可以是任何需要的地方。切面利用这些切点插入到正常的流程中而不干扰它们的运行。
引入和织入:
引入是可以向现有的类添加新的方法和属性。它可以保存某个方法或者变量的状态然后在不改变现有类的情况下使它们具有新的属性和状态。
织入是把切面应用到目标对象并创建新代理对象的过程,可以说切面是被织入到对象中。
织入在对象不同的生命周期内都可以织入,比如被编译的时候织入,被加载的时候,被运行的时候织入。
springaop是在运行时织入切面的(面相切面不仅仅是spring,它是个大的概念)。
这两个概念不好理解。应该在实际操作的时候理解好一些。
springaop是通过拦截实现通知的。在运行时通知对象,它会创建一个代理类,把目标对象封装起来,执行切面逻辑并调用目标对象方法。
aop的框架:
AspectJ
JBoss
这两个以后再了解
spring借鉴了AspectJ的方式,但它什么方式我也不懂…所以看了相对熟悉的注解方式创建切面。
使用@AspectJ注解切面
然后使用@Before@After来注解切面里的通知
比如@Before("exectuion(** 接口())")
@AspectJ注解标明它是一个POJO还是一个切面。
还需要在命名空间启用Aspectj自动代理,然后声明bean。
之前写的应该是因为没有启用报错。
Spring有4种类型支持切面一是基于代理的经典aop,这个没有介绍。
二是纯pojo切面。三是@Aspectj注解驱动的切面。四是注入式Aspectj切面。
今天只看了注解的方式,还需要通过配置来设置bean。而且看的还不怎么清楚٩😩ི۶
明天计划的事情:
学习基础,看spring实战
问题和收获:
SpringAop的切面编程方式,关于注解的部分
*关于插入乱码的问题,不知道是不是乱码,还是说编译的时候出现的问题,因为都是问号而不是乱码显示。
*用手机写真是太难受了,而且光是看根本很多东西根本不明白,看的也是糊里糊涂的。
*竖屏不能编辑,没开屏幕转向,没有编辑按钮,后来发现横屏才显示。
评论