Skip to content

Commit

Permalink
polish
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelliao committed Oct 21, 2024
1 parent fb55305 commit c58b657
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,7 @@ while (en.hasMoreElements()) {
几个要点:

1. ClassLoader首先从`Thread.getContextClassLoader()`获取,如果获取不到,再从当前Class获取,因为Web应用的ClassLoader不是JVM提供的基于Classpath的ClassLoader,而是Servlet容器提供的ClassLoader,它不在默认的Classpath搜索,而是在`/WEB-INF/classes`目录和`/WEB-INF/lib`的所有jar包搜索,从`Thread.getContextClassLoader()`可以获取到Servlet容器专属的ClassLoader;

2. Windows和Linux/macOS的路径分隔符不同,前者是`\`,后者是`/`,需要正确处理;

3. 扫描目录时,返回的路径可能是`abc/xyz`,也可能是`abc/xyz/`,需要注意处理末尾的`/`

这样我们就完成了能扫描指定包以及子包下所有文件的`ResourceResolver`
Expand Down
4 changes: 2 additions & 2 deletions source/books/summerframework/30-aop/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ AOP即Aspect Oriented Programming,面向切面编程,它本质上就是一

用表达式匹配,很容易漏掉或者打击面太大。用注解无疑是最简单的,因为这样被装配的Bean自己能清清楚楚地知道自己被安排了。因此,在Summer Framework中,我们只支持Annotation模式的AOP机制,并且采用动态生成字节码的方式实现。

明确了需求,我们来看如何实现动态生成字节码。Spring采用的是CGLIB,因此我们去CGLIB首页看一下,不看不要紧,一看吓一跳:
明确了需求,我们来看如何实现动态生成字节码。Spring采用的是CGLIB,因此我们去CGLIB首页看一下,不看不知道,一看吓一跳:

> cglib is unmaintained ... migrating to something like ByteBuddy.
原来CGLIB已经不维护了,建议使用ByteBuddy。既然如此,我们就选择ByteBuddy实现AOP吧。
原来CGLIB已经不维护了,建议使用[ByteBuddy](https://bytebuddy.net/)。既然如此,我们就选择ByteBuddy实现AOP吧。

比较一下Spring Framework和Summer Framework对AOP的支持:

Expand Down

0 comments on commit c58b657

Please sign in to comment.