`
zhangzuanqian
  • 浏览: 270047 次
  • 来自: ...
社区版块
存档分类
最新评论

spring Lifecycle接口 FactoryBean

阅读更多

Spring提供了几个标志接口(marker interface),这些接口用来改变容器中bean的行为;它们包括InitializingBeanDisposableBean。实现这两个接口的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为myBeanFactoryBean,在容器上调用getBean("myBean")将返回FactoryBean创建的bean实例,但是调用getBean("&myBean")将返回FactoryBean本身的实例。

分享到:
评论

相关推荐

    spring-lifecycle:一个用于试验 spring 生命周期的小示例应用程序

    标题中的"spring-lifecycle"暗示了这个项目专注于探索Spring框架中bean的生命周期管理。让我们深入了解一下Spring框架的生命周期及其相关的知识点。 在Spring中,bean的生命周期是指从创建到销毁的整个过程,它包括...

    Spring Bean Lifecycle Control

    此外,如果Bean实现了`InitializingBean`接口,Spring会调用`afterPropertiesSet()`方法。另外,还可以通过`init-method`属性指定一个非注解的方法作为初始化方法。 2. **依赖注入**:Spring会根据Bean定义中的属性...

    Spring-Reference_zh_CN(Spring中文参考手册)

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

    spring集成socket服务

    我们可以实现`Lifecycle`接口或`SmartLifecycle`接口,以便在Spring容器启动完成后触发自定义的初始化操作,例如启动Socket服务器。 1. **集成Socket服务**:在Spring中集成Socket服务,我们通常会使用`java.net....

    SpringDemo:Java集合,Lambda表达式,Stream API和Spring Lifecycle方法的演示

    它包括ArrayList、LinkedList、HashSet、HashMap等接口和类。ArrayList提供了基于索引的访问,适合频繁进行插入和删除操作;LinkedList则适合于迭代和添加元素,因为它的每个元素都有前驱和后继;HashSet存储不重复...

    第二十章 Spring 应用上下文生命周期(ApplicationContext Lifecycle)1

    在Spring框架中,ApplicationContext是应用的核心,它管理着所有Bean的生命周期。本章将深入探讨Spring应用上下文的生命周期,从启动准备阶段到关闭阶段,包括各个关键步骤和相关组件的作用。 1. **Spring 应用上...

    Spring in Action 使用Maven 构建Spring 工程

    在Spring工程中,我们常常会使用Maven的生命周期(Lifecycle)和插件(Plugins)。例如,`mvn compile`命令会编译源代码,`mvn test`则会执行单元测试,而`mvn package`会打包应用为可部署的格式,如JAR或WAR。此外...

    spring 4.3 源代码

    此外,Lifecycle接口允许自定义启动和停止逻辑。 4. **AOP(面向切面编程)** AOP是Spring提供的一种强大的代码组织方式,4.3版本支持声明式事务管理、日志记录、性能监控等功能。Pointcut和Advisor的概念使得切面...

    Spring 2.0 开发参考手册

    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 plugin-android-lifecycle

    Flutter的flutter_plugin_android_lifecycle插件是一个Flutter插件,用于访问Android Lifecycle objects。它可以帮助其他Flutter插件在Android上更好地集成。 要使用flutter_plugin_android_lifecycle插件,需要将...

    spring chm文档

    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定制实例化逻辑 ...

    spring 最新框架jar

    [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

    androidx-lifecycle-common-2.1.0.jar

    Dell Lifecycle Controller 设置 Dell PowerEdge 服务器

    Dell Lifecycle Controller 是一种先进的嵌入式系统管理技术 , 借助这种技术 , 可以通过 integrated Dell Remote Access Controller (iDRAC) 来实现远程服务器管理。在使用 Lifecycle Controller 的情况下 ...

    androidx-lifecycle-livedata-2.0.0.aar

    androidx-lifecycle-livedata-2.0.0.aar

    androidx-lifecycle-livedata-core-2.0.0.aar

    androidx-lifecycle-livedata-core-2.0.0.aar

    模拟Spring的IOC

    Spring提供了多种DI方式,包括构造器注入、setter注入和接口注入。开发者可以通过注解或XML配置来指定依赖关系。 **3. 模拟Spring的IOC容器** 要模拟Spring的IOC容器,我们需要实现以下几个核心功能: - **Bean...

    Dell_Lifecycle_Controller_Integration_3.0.0

    Dell_Lifecycle_Controller_Integration_3.0.0 用于更新dell 11g 网络服务器的lifecycle controller integration

    Getting.started.with.Spring.Framework.2nd.Edition1491011912.epub

    - Bean lifecycle interfaces - Customizing beans using BeanPostProcessors and BeanFactoryPostProcessors - Bean definition inheritance - JSR 250's and 330's annotations for dependency injection - ...

Global site tag (gtag.js) - Google Analytics