发表于: 2017-08-22 13:25:19

3 1153


今天完成的事情:

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、



返回列表 返回列表
评论

    分享到