专业的编程技术博客社区

网站首页 > 博客文章 正文

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

baijin 2024-08-12 13:40:38 博客文章 21 ℃ 0 评论

一、基本介绍

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.xml

2.创建获取 ClassLoader 接口

  • com.shawn.spring.tool.aware.GetClassLoaderService

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

三、单元测试

1.测试代码

  • com.shawn.spring.tool.aware.ApiTest

2.测试结果

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

四、总结

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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表