-
Notifications
You must be signed in to change notification settings - Fork 19
Spring容器扩展点之Aware接口
在Spring容器中,提供了许多Aware接口,使用这些接口可以更好的对bean进行扩展,获取许多与容器相关的组件;今天,我们大概来看看Spring中提供的一些Aware接口:
-
BeanNameAware
: 该接口只有一个setBeanName
方法,如果Spring容器检测到bean实现了该接口,则会将该bean实例的beanName属性注入到该实例中。 -
ApplicationContextAware
: 该接口只有个setApplicationContext
方法;如果Spring容器检测到bean实现了该接口,则会将Spring的ApplicationContext注入到bean实例中。但一般不建议通过实现该接口获取容器ApplicationContext,因为通过实现接口的方式会增加代码的耦合度,如果希望获取ApplicationContext实例,可以使用一般的注入方式,如使用注解@Autowired
,这样便就可以获取ApplicationContext,如:
@Autowired
private ApplicationContext applicationContext;
-
BeanClassLoaderAware
: 该接口有个setBeanClassLoader
方法,与前两个接口类似,实现了该接口后,可以向bean中注入加载该bean的ClassLoader -
BeanFactoryAware
: 该接口有个setBeanFactory
方法,用来将当前的beanFactory注入到该bean实例中 -
ApplicationEventPublisherAware
: ApplicationContext事件机制是观察者设计模式的实现,通过ApplicationEvent类和ApplicationListener接口,可以实现ApplicationContext的事件处理。其中ApplicationEvent
为容器事件。实现接口ApplicationEventPublisherAware
的bean可获取ApplicationEventPublisher
实例(因为ApplicationContext已实现接口ApplicationEventPublisher
接口,所以其实此处默认还是注入了ApplicationContext
实例),用于发布事件 -
MessageSourceAware
: 实现该接口可,可获取MessageSource
实例,该实例用于解析消息的策略接口,支持该类消息的参数化与国际化(因为ApplicationContext已实现接口MessageSource
接口,所以其实此处默认还是注入了ApplicationContext
实例) -
NotificationPublisherAware
: 实现该接口的bean,可获取JMX通知发布者 -
ResourceLoaderAware
: 可获取Spring中配置的加载程序(ResourceLoader),用于对资源进行访问;可用于访问类l类路径或文件资源 -
ServletConfigAware
: 该接口仅在wen应用中有效,用于获取ServletConfig -
ServletContextAware
: 该接口仅在wen应用中有效,用于获取ServletContext -
LoadTimeWeaverAware
: 可获取LoadTimeWeaver
实例,用于在加载时处理类定义
-
【 Algorithm 】
-
【 Blog 】
-
【 C 】
-
【 Database 】
-
【 Distributed 】
-
【 FrontEnd 】
- 【 FrontEnd/Frame 】
- 【 FrontEnd/Node 】
- Font
- Hexo
- JavaScript
- LearnPS
- ResponseCode
- SVG
- ViewSolution
- extjs学习笔记
-
【 Functional 】
-
【 Go 】
-
【 Groovy 】
-
【 Java 】
- 【 Java/AdvancedLearning 】
- 【 JavaBasic 】
- 【 JavaCache 】
- 【 JavaCollection 】
- 【 JavaConcurrency 】
- 【 JavaMap 】
- Annotation
- ClassFile
- Collection
- Concurrency
- Deploy
- Exception
- ExtendsAndInterface
- Generics
- IO
- JDBC
- JDKAndJRE
- JMX
- JVM
- Java11
- Java7
- Java8
- JavaNetwork
- JavaReleaseVersion
- JavaWeb
- JvmPerformance
- MQ
- MultipleLanguage
- Proxy
- Reflection
- Serialize
- SyntaxAndType
- Thread
- WebPerformance
- 【 Java/Android 】
- 【 Java/Ecosystem 】
- 【 Java/MSA 】
- 【 Java/Spring 】
- 【 Java/TemplateEngine 】
- 【 Java/Test 】
- 【 Java/Tool 】
- 【 Java/thread 】
- AlibabaJavaStandard
- DesignPattern
- HashMap解析
- Java-NIO
- Java虚拟机
- Log
- MIS
- Quartz
- RESTful
- WebSocket学习笔记
- ZooKeeper学习笔记
- android学习笔记
- 【 Java/AdvancedLearning 】
-
【 Kotlin 】
-
【 Linux 】
- 【 Linux/Alpine 】
- 【 Linux/Arch 】
- 【 Linux/Base 】
- 【 Linux/Centos 】
- 【 Linux/Container 】
- 【 Linux/Debian 】
- 【 Linux/Tool 】
- JavaDevInit
- Linux系统学习
-
【 MyBlog 】
-
【 Python 】
- 【 Python/Tool 】
- Python
- PythonConcurrent
- PythonGUI
- PythonGame
- PythonNet
- PythonOffices
- PythonWeb
- Python基础
- Python核心学习
-
【 Reactive 】
-
【 Rust 】
-
【 Scala 】
-
【 Script 】
-
【 Skills 】
- 【 Skills/Application 】
- 【 Skills/CS 】
- 【 Skills/Cache 】
- 【 Skills/Councurrency 】
- 【 Skills/DevOps 】
- 【 Skills/Document 】
- 【 Skills/Ecology 】
- 【 Skills/Network 】
- 【 Skills/Search 】
- 【 Skills/SoftwareEngineering 】
- 【 Skills/Spider 】
- 【 Skills/Test 】
- 【 Skills/Vcs 】
- 【 Skills/Work 】
- AppManual
- CelebrityQuotes
- Miscellaneous
- Platform
- Problem
- Protobuf
- RegularExpression
- SoftwareDesignEngineer
- Website
-
【 Windows 】