版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangxin09/article/details/83239387
动态 Java
Java 动态性,正在不断补充。如果用 JS 这些动态语言那当然简单。
选型 | Java 动态代理 | JavaAgent/Instrument/动态编译 | ASM | cglib | Javassist |
---|---|---|---|---|---|
是否 Java 自带 | yes | yes | no | no | no |
使用场景 | 监控和控制虚拟机的行为 | 字节码生成框架 | 字节码生成框架,基于 ASM | ||
优点 | 自带 | 快速 | 快速简单 | 快速简单 | |
缺点 | 对 main方法或jar 实施 | 需要接口,语法晦涩 | 过于底层,需要字节码知识 | ||
官网 | n/a | n/a | https://asm.ow2.io/ | https://github.com/cglib/cglib | http://www.javassist.org/ |
Ref:
- Java APT
- JavaPoet (https://github.com/square/javapoet)生成 Java 文件而不是字节码
- https://blog.csdn.net/u010072711/article/details/77040159
- https://www.jianshu.com/p/5514cf705666
- https://blog.csdn.net/zhuoxiuwu/article/details/78619645
- https://blog.csdn.net/qq_32115439/article/details/78361596
- 组件化 https://www.jianshu.com/p/0d45f2a894ba
IOC 注解
Spring | JSR330 | Ajaxjs |
---|---|---|
@Component | @Named | @Resources |
@Autowired | @Inject | @Bean |
@Qualifier | @Named | @Resources |
基于包的模块
一个包是一个代码集合,对外暴露的只是在这个包里面的一个接口和实现,其他不可见