Spring提供了几个标志接口(marker interface),这些接口用来改变容器中bean的行为;它们包括InitializingBean
和DisposableBean
。实现这两个接口的bean在初始化和析构时容器会调用前者的afterPropertiesSet()
方法,以及后者的destroy()
方法。
实现org.springframework.beans.factory.InitializingBean
接口允许容器在设置好bean的所有必要属性后,执行初始化事宜。InitializingBean
接口仅指定了一个方法:
void afterPropertiesSet() throws Exception;
使用FactoryBean
定制实例化逻辑
工厂bean需要实现org.springframework.beans.factory.FactoryBean
接口。
FactoryBean
接口是插入到Spring IoC容器用来定制实例化逻辑的一个接口点。如果你有一些复杂的初始化代码用Java可以更好来表示,而不是用(可能)冗长的XML,那么你就可以创建你自己的FactoryBean
,并在那个类中写入复杂的初始化动作,然后把你定制的FactoryBean
插入容器中。
FactoryBean
接口提供三个方法:
-
Object getObject()
:返回一个由这个工厂创建的对象实例。这个实例可能被共享(取决于isSingleton()的返回值是singleton或prototype)。
-
boolean isSingleton()
:如果要让这个FactoryBean创建的对象实例为singleton则返回true,否则返回false。
-
Class getObjectType()
:返回通过getObject()方法返回的对象类型,如果该类型无法预料则返回null。
在Spring框架中FactoryBean
的概念和接口被用于多个地方;在本文写作时,Spring本身提供的FactoryBean
接口实现超过了50个。
最后,有时需要向容器请求一个真实的FactoryBean
实例本身,而不是它创建的bean。这可以通过在FactoryBean
(包括ApplicationContext
)调用getBean
方法时在bean id前加'&'
(没有单引号)来完成。因此对于一个假定id为myBean
的FactoryBean
,在容器上调用getBean("myBean")
将返回FactoryBean
创建的bean实例,但是调用getBean("&myBean")
将返回FactoryBean
本身的实例。
分享到:
相关推荐
标题中的"spring-lifecycle"暗示了这个项目专注于探索Spring框架中bean的生命周期管理。让我们深入了解一下Spring框架的生命周期及其相关的知识点。 在Spring中,bean的生命周期是指从创建到销毁的整个过程,它包括...
此外,如果Bean实现了`InitializingBean`接口,Spring会调用`afterPropertiesSet()`方法。另外,还可以通过`init-method`属性指定一个非注解的方法作为初始化方法。 2. **依赖注入**:Spring会根据Bean定义中的属性...
3.5.1. Lifecycle接口 3.5.1.1. 初始化回调 3.5.1.2. 析构回调 3.5.2. 了解自己 3.5.2.1. BeanFactoryAware 3.5.2.2. BeanNameAware 3.6. bean定义的继承 3.7. 容器扩展点 3.7.1. 用BeanPostProcessor定制bean 3.7....
我们可以实现`Lifecycle`接口或`SmartLifecycle`接口,以便在Spring容器启动完成后触发自定义的初始化操作,例如启动Socket服务器。 1. **集成Socket服务**:在Spring中集成Socket服务,我们通常会使用`java.net....
它包括ArrayList、LinkedList、HashSet、HashMap等接口和类。ArrayList提供了基于索引的访问,适合频繁进行插入和删除操作;LinkedList则适合于迭代和添加元素,因为它的每个元素都有前驱和后继;HashSet存储不重复...
在Spring框架中,ApplicationContext是应用的核心,它管理着所有Bean的生命周期。本章将深入探讨Spring应用上下文的生命周期,从启动准备阶段到关闭阶段,包括各个关键步骤和相关组件的作用。 1. **Spring 应用上...
在Spring工程中,我们常常会使用Maven的生命周期(Lifecycle)和插件(Plugins)。例如,`mvn compile`命令会编译源代码,`mvn test`则会执行单元测试,而`mvn package`会打包应用为可部署的格式,如JAR或WAR。此外...
此外,Lifecycle接口允许自定义启动和停止逻辑。 4. **AOP(面向切面编程)** AOP是Spring提供的一种强大的代码组织方式,4.3版本支持声明式事务管理、日志记录、性能监控等功能。Pointcut和Advisor的概念使得切面...
3.5.1. Lifecycle接口 3.5.2. 了解自己 3.6. bean定义的继承 3.7. 容器扩展点 3.7.1. 用BeanPostProcessor定制bean 3.7.2. 用BeanFactoryPostProcessor定制配置元数据 3.7.3. 使用FactoryBean定制实例化逻辑 ...
Flutter的flutter_plugin_android_lifecycle插件是一个Flutter插件,用于访问Android Lifecycle objects。它可以帮助其他Flutter插件在Android上更好地集成。 要使用flutter_plugin_android_lifecycle插件,需要将...
3.5.1. Lifecycle接口 3.5.2. 了解自己 3.6. bean定义的继承 3.7. 容器扩展点 3.7.1. 用BeanPostProcessor定制bean 3.7.2. 用BeanFactoryPostProcessor定制配置元数据 3.7.3. 使用FactoryBean定制实例化逻辑 ...
[the lifecycle of an issue]: https://github.com/spring-projects/spring-framework/wiki/The-Lifecycle-of-an-Issue [spring-framework-issues]: ...
androidx-lifecycle-common-2.1.0.jar
Dell Lifecycle Controller 是一种先进的嵌入式系统管理技术 , 借助这种技术 , 可以通过 integrated Dell Remote Access Controller (iDRAC) 来实现远程服务器管理。在使用 Lifecycle Controller 的情况下 ...
androidx-lifecycle-livedata-2.0.0.aar
androidx-lifecycle-livedata-core-2.0.0.aar
Spring提供了多种DI方式,包括构造器注入、setter注入和接口注入。开发者可以通过注解或XML配置来指定依赖关系。 **3. 模拟Spring的IOC容器** 要模拟Spring的IOC容器,我们需要实现以下几个核心功能: - **Bean...
Dell_Lifecycle_Controller_Integration_3.0.0 用于更新dell 11g 网络服务器的lifecycle controller integration
- Bean lifecycle interfaces - Customizing beans using BeanPostProcessors and BeanFactoryPostProcessors - Bean definition inheritance - JSR 250's and 330's annotations for dependency injection - ...