龙空技术网

spring使用技巧-好用的Aware接口介绍

编程少年 1999

前言:

此时姐妹们对“spring访问路径”大约比较重视,看官们都需要分析一些“spring访问路径”的相关资讯。那么小编同时在网络上网罗了一些关于“spring访问路径””的相关文章,希望同学们能喜欢,朋友们快快来了解一下吧!

一、基本介绍1.什么是Aware接口?

在Spring框架中,"Aware"是一组接口,用于让Bean实例感知Spring容器的某些特定功能或资源。借助这些接口,Bean实例可以与Spring容器进行交互,并获取所需的上下文信息或资源。

2.有哪些Aware接口?

① 上下文相关的Aware

ApplicationContextAware:允许Bean实例获取对应的ApplicationContext上下文实例。通过该接口,Bean实例可以访问Spring容器的各种功能,如获取其他Bean实例、发布事件等。BeanFactoryAware:允许Bean实例获取对应的BeanFactory实例。通过该接口,Bean实例可以访问BeanFactory的功能,如获取其他Bean实例、设置属性值等。BeanNameAware:允许Bean实例获取自身在Spring容器中注册的名称。通过该接口,Bean实例可以获取自身在容器中的唯一标识符。

② 资源加载和处理相关的Aware

ResourceLoaderAware:允许Bean实例获取ResourceLoader对象。通过该接口,Bean实例可以加载资源文件,如读取配置文件、访问类路径下的资源等。MessageSourceAware:允许Bean实例获取MessageSource对象。通过该接口,Bean实例可以获取国际化消息,并进行相应的国际化处理。LoadTimeWeaverAware:允许Bean实例获取LoadTimeWeaver对象。通过该接口,Bean实例可以与类加载机制进行交互,例如进行类的加载、转换等。

③ Web应用程序环境相关的Aware

ServletConfigAware:用于Web应用程序环境下,允许Bean实例获取ServletConfig对象。通过该接口,Bean实例可以获取Servlet配置的信息。ServletContextAware:用于Web应用程序环境下,允许Bean实例获取ServletContext对象。通过该接口,Bean实例可以获取Web应用程序的上下文信息。

④ 类加载器相关的Aware

BeanClassLoaderAware:允许Bean实例获取加载它们的ClassLoader。通过该接口,Bean实例可以获取ClassLoader的相关信息,例如加载类的位置、类加载策略等。

⑤ 特定环境相关的Aware

BootstrapContextAware:用于WebLogic Server环境下,允许Bean实例获取BootstrapContext对象。通过该接口,Bean实例可以访问WebLogic Server的特定功能和资源。NotificationPublisherAware:用于JMX环境下,允许Bean实例获取NotificationPublisher对象。通过该接口,Bean实例可以发布JMX通知。二、代码实战

下面就以 BeanClassLoaderAware 接口为示例,获取加载 Bean 的 CLassLoader 信息,并打印相关信息。

1.创建项目并引入依赖pom.xml2.创建获取 ClassLoader 接口com.shawn.spring.tool.aware.GetClassLoaderService

说明:实现 BeanClassLoaderAware 接口,GetClassLoaderService 作为 Bean 在初始化过程中,Spring 会将 ClassLoader 回传给我们当前 Bean 实例中。

三、单元测试1.测试代码com.shawn.spring.tool.aware.ApiTest2.测试结果

日志中打印了加载 Spring Bean 的加载器是 sun.misc.Launcher$AppClassLoader,加载器的父类是:sun.misc.Launcher$ExtClassLoader@2c7b84de

四、总结

通过实现相关 Aware 接口,我们可以获取Spring 组件的相关资源,进而我们可以和整个Spring 进行相互交互。

标签: #spring访问路径