概述
Spring AOP是Spring核心框架的重要组成部分。采用动态代理机制和字节码生成技术实现。
实现机制
实现逻辑
动态代理机制和字节码生成都是在运行期间为目标对象生成一个 代理对象,而将横切逻辑织入到这个代理对象中,系统最终使用的是织入了横切逻辑的代理对象,而不是真正的目标对象。
在String中,+
被赋予了新的功能。该功能可以实现String字符串的连接。在对String的+操作进行反编译时,可知其内部是如何工作的。
1 | //源码 |
使用javac Concatenation.java
命令获取class文件,然后使用javap -c Concatenation
命令得到:
1 | public interface HandlerInterceptor { |
preHandle: 预处理回调方法,实现处理器的预处理(如登录检查),第三个参数为响应的处理器。返回TRUE
,继续执行;返回FALSE
,中断流程。
postHandle: 实现处理器的后处理,但在渲染视图之前。
afterCompletion: 整个请求处理完毕回调方法,即在视图渲染完毕时回调
1 | class OutClass { |
从上可知,内部类的实现很简单,就是将类的定义放在另一个类中,即:place a class definition within another class definition
.this 使用
当在内部类中要使用外部类的引用,需要使用.this
,例如:
1 | public class Test { |
文件下载的本质是从服务器读取要下载的文件,把文件转化为流,然后读取流。
1 | /** |
这种方式比较普通,是在之前的servlet中比较常用,但是在Spring MVC 项目中,还有一种比较优雅的实现方式,详情如下。
1 | /** |
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。
抽象方法
仅有声明而没有方法体的方法叫抽象方法。
抽象类
包含抽象方法的类叫做抽象类。
1 | 为抽象类创建对象是不安全的。即:抽象类不能创建对象。 |
interface是一个极度抽象的类,interface这个关键字产生一个安全抽象的类,根本没有提供任何具体实现。
static final
的。这些域不是接口的一部分,他们的值被存储在该接口的静态存储区域内。interface是 like a
关系,定义该体系的额外功能;抽象类是 is a
关系,定义该体系的基本共性内容。
nodejs 的安装有多重方式,本例是通过nvm来安装nodejs。首先,安装nvm 。
配置文件
~/.bashrc
文件~/.bash_profile
文件~/.bashrc配置
1 | export NVM_DIR="~/.nvm" |
~/.bash_profile配置
1 | if [ -f ~/.bashrc ]; then |
source ~/.bash_profile
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
1 | $ hexo new "My New Post" |
More info: Writing
1 | $ hexo server |
More info: Server
1 | $ hexo generate |
More info: Generating
1 | $ hexo deploy |
More info: Deployment