发表于: 2017-08-22 13:25:19
3 1151
今天完成的事情:
1、百度了一下 cglib 和 asm 的概念。
ASM 是啥呢?是一个Java字节码操控框架,我们都知道 Java 被编译后是字节码文件,
而 ASM 能向 Java的 字节码文件中添油加醋,用于实现大家都喜爱的 AOP 。
举个例子:
AOP 的设计初衷是 在浩瀚的代码海洋中 存在着这样一种情况:
在软件系统中,往往有很多模块、或者很多类共享“某个行为”,或者说“某个行为”存在于各个方法之中。这个“行为”可以看做是“横向的”存在于软件之中,他所关注的是软件的各个部分的一些共有行为,而且这个“共有行为”是不属于核心业务逻辑的。这种问题,使用Java的“面向对象”是无法解决的。
比如有一个银行管理系统,有 Bank,Customer,Account,Invoice 等类,现在需要加入一个安全模块,对上述类的所有操作之前都必须进行一次安全检查。
由于Java 是单继承的,而这个4个类是分别继承于不同的父类,所以很难在父类上加入关于安全检查的“共有功能”。
有一种方案是“装饰模式”,
public class AccountWithSecurityCheck implements Account {
private Account account;
public AccountWithSecurityCheck (Account account) {
this.account = account;
}
public void operation() {
SecurityChecker.checkSecurity();
account.operation();
}
}
在这个例子里,改造一个类的一个方法还好,如果是变动整个模块,就是个大麻烦了。
https://www.ibm.com/developerworks/cn/java/j-lo-asm30/
“动态改变 Java 类就是要解决 AOP 的问题,提供一种得到系统支持的可编程的方法,自动化地生成或者增强 Java 代码。这种技术已经广泛应用于最新的 Java 框架内,如 Hibernate,Spring 等”。
所以在使用了 Hibernate或Spring 框架的web项目里,经常会发生 和cglib 相关的jar包冲突,就是因为这些框架都带有 AOP 的功能。
2、把 learn、skills 的代码都down 了下来。随便看了几个controller,重点看了一下 MyListUtil 的使用。
3、阅读了一部分 SpringRMI 的官方文档,其中推荐了一些 远程调用的框架,比如 Hessin。
4、博韬高高兴兴地写了一个工具类,并打上了 @component注解,内部属性里打上了@autowired注解。
但运行时爆出空指针异常。debug 一下,发现 spring 根本没有注入。期初我也懵逼了一下,后来发现他的这个工具类是 new 出来的。
5、晚上王振和曾添遇到了一个问题。和nginx跨域有关。我没弄懂。明天继续追踪一下。
明天计划的事情:
现在的学习方向:有 learn、skill、muscle 这三个项目的代码可以看。
还有 公司的 DAL 框架 生成代码的流程是怎么样的,用到了哪些技术。
1、看 SpringRMI 官方文档。了解不同webservice的区别。
遇到的问题:
1、我对cookie的理解又模糊了,为什么应用服务器重启后 cookie 依然存在?
收获:
1、
评论