AOP 面向切面编程
在此 AOP 面向切面编程 文章介绍了什么是面向切面编程,并介绍了如何使用注解的方式去实现切面。下面将介绍另一种实现切面编程, 这种方式虽然没有直接使用注解的方式方便,但是它足够灵活。
这里主要涉及到三个抽象类,分别是 AbstractBeanFactoryPointcutAdvisor
、MethodInterceptor
、StaticMethodMatcherPointcut
。
在此 AOP 面向切面编程 文章介绍了什么是面向切面编程,并介绍了如何使用注解的方式去实现切面。下面将介绍另一种实现切面编程, 这种方式虽然没有直接使用注解的方式方便,但是它足够灵活。
这里主要涉及到三个抽象类,分别是 AbstractBeanFactoryPointcutAdvisor
、MethodInterceptor
、StaticMethodMatcherPointcut
。
Java 的标准 java.net.URL 类和各种 URL 前缀的标准处理程序无法满足所有对 low-level 资源的访问,比如:没有标准化的 URL 实现可用于访问需要从类路径或相对于 ServletContext 获取的资源。并且缺少某些 Spring 所需要的功能,例如检测某资源是否存在等。而 Spring 的 Resource 声明了访问 low-level 资源的能力。
public interface Resource extends InputStreamSource {
boolean exists();
default boolean isReadable() {
return this.exists();
}
default boolean isOpen() {
return false;
}
default boolean isFile() {
return false;
}
URL getURL() throws IOException;
URI getURI() throws IOException;
File getFile() throws IOException;
default ReadableByteChannel readableChannel() throws IOException {
return Channels.newChannel(this.getInputStream());
}
long contentLength() throws IOException;
long lastModified() throws IOException;
Resource createRelative(String relativePath) throws IOException;
@Nullable
String getFilename();
String getDescription();
}
AOP(Aspect Oriented Programming)是一种设计思想,是软件设计领域中的面向切面编程,它是面向对象编程的一种补充和完善,它可以通过预编译的方式和运行期动态代理的方式实现,在不修改源代码的情况下,给程序动态统一添加额外功能的一种技术。利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各个部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
分散在各个模块中解决同一个问题,如用户验证、日志管理、事务处理、数据缓存都属于横切关注点。
国际化也称作 i18n,其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数。由于软件发行可能面向多个国家,对于不同国家的用户,软件显示不同语言的过程就是国际化。通常来讲,软件中的国际化是通过配置文件来实现的,假设要支撑两种语言,那么就需要两个版本的配置文件。
Java 本身是支持国际化的,java.util.Locale 用于指定当前用户所属的语法环境等信息,java.util.ResourceBundle 用于查找绑定对应的资源文件。Locale 包含了 language 信息和 country 信息,Local 创建默认 Locale 对象时使用的静态方法。
IoC 是 Inversion of Control 的简写,译为控制翻转,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够知道我们如何设计出松耦合、更优良的程序。
Spring 通过 IoC 容器来管理所有 Java 对象的实例化和初始化,控制对象与对象之间的依赖关系。我们将由 IoC 容器管理的 Java 对象称为 Spring Bean,他与使用关键字 new 创建的 Java 对象没有任何区别。
IoC 容器是 Spring 框架中最重要的核心组件之一,它贯穿了 Spring 从诞生到成长的整个过程。