`

spring之BeanFactoryAware接口

 
阅读更多

要直接在自己的代码中读取spring的bean,我们除了根据常用的set外,也可以通过spring的BeanFactoryAware接口实现,只要实现setBeanFactory方法就可以,

private BeanFactory               beanFactory;

public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.beanFactory = beanFactory;
}

这样我们就可以直接拿东西用了,如
Object  object = beanFactory.getBean(beanName);

我 们既然可以通过set来拿到我们要的对象,为什么还要用这个beanFactory呢,道理很简单,因为有些情况是需要动态的去获取对象的,比如说我有 10个银行的处理对象,他们都继承了我的BankService对象,但是具体处理的时候要哪家银行的对象呢?这个依赖于用户的选择。你可以注入10个 BankService实例,然后用if --else来搞,不过那样太坨了。每增加一家银行你都需要改代码。

通过beanFactory的话,那就一行代码搞定,只要给beanName就OK了,动点脑筋吧beanName配置的有规律点,然后根据用户的银行选择,凑出个beanName,大功告成了!

简单一句话的理解是:beanFactory让你可以不依赖注入方式,随意的读取IOC容器里面的对象,不过beanFactory本身还是要注入的,呵呵

分享到:
评论

相关推荐

    Spring中与Bean相关的接口

    最后,`AutowireCandidateResolver`和`BeanFactoryAware`接口分别提供了候选Bean的判断逻辑和BeanFactory的获取方式,这些在特定场景下能帮助我们实现更复杂的Bean管理。 综上所述,Spring中的Bean接口和注解为...

    Spring各种回调接口[定义].pdf

    6. **BeanFactoryAware**:此接口使得Bean可以在运行时显式查找其依赖的其他对象。BeanFactory通过`setBeanFactory(BeanFactory beanFactory)`方法传递自身,使得Bean可以直接使用BeanFactory来获取依赖。然而,这种...

    Spring实现Aware接口自定义获取bean的两种方式

    BeanFactoryAware接口是Spring框架中的一种 Aware接口,通过实现该接口,可以获取BeanFactory对象,从而获取bean对象。代码如下: @Service public class BeanFactoryHelper implements BeanFactoryAware { ...

    spring运行过程中动态注册bean

    ### BeanFactoryAware接口与监听器 在实际开发中,我们往往需要在应用启动后动态注册Bean,这时候可以利用`BeanFactoryAware`接口和`ApplicationListener`接口。`BeanFactoryAware`接口使得Bean可以被注入`...

    Spring.pdf

    3. 处理BeanNameAware和BeanFactoryAware接口:如果Bean实现了BeanNameAware或BeanFactoryAware接口,Spring会调用相应的方法,将Bean的ID和BeanFactory设置到Bean中。 4. BeanPostProcessor的前置处理:在Bean的...

    Spring特性——Aware感知特性

    BeanFactoryAware接口提供了一个方法`setBeanFactory(BeanFactory beanFactory)`,允许bean获取到当前的BeanFactory实例。这样,bean就能在运行时动态地查找和依赖其他bean,或者利用BeanFactory提供的功能,如工厂...

    Spring源码学习八:常用的扩展接口详解1

    4. **BeanFactoryAware接口**: `BeanFactoryAware`接口包含`setBeanFactory(BeanFactory)`方法。实现这个接口的类可以获取到装载当前Bean的`BeanFactory`,这允许类直接访问容器和其中的其他Bean,提供了更大的...

    Spring中关于Bean的管理的课件

    4. **Spring的应用上下文(ApplicationContext)**:ApplicationContext是Spring的主要接口之一,它提供了获取Bean、处理消息和事件等功能,是Spring应用中的主要入口点。 5. **构造注入(constructor injection)*...

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

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 5.4.2.1. 注册用户自定义的PropertyEditor ...

    Spring Bean生命周期.pdf

    其中,Spring Bean生命周期的管理是Spring框架的核心功能之一,它涉及Spring容器如何创建、配置以及销毁Bean的整个过程。理解Spring Bean的生命周期对于开发高效和可维护的Java应用至关重要。 Spring Bean生命周期...

    Spring bean 管理

    - Bean的生命周期过程包括实例化、属性赋值、BeanNameAware和BeanFactoryAware接口方法调用、BeanPostProcessor接口方法调用、InitializingBean和DisposableBean接口方法调用等。 5. Spring的属性注入: Spring...

    spring常见问题

    通过实现 BeanFactoryAware 接口来获得 factory 可以获取 Spring 容器。 动态代理技术是指在运行时生成代理对象,以便在运行时动态地将横切逻辑和业务逻辑编织在一起。JDK 的动态代理主要涉及到 java.lang.reflect ...

    获得spring里注册Bean的四种方法

    然后,我们可以实现 BeanFactoryAware 接口,使用 setBeanFactory() 方法来设置 BeanFactory 对象。这样,我们就可以使用 getBeanFactory() 方法来获取 BeanFactory 对象,并使用它来获取指定名称的 Bean 对象。 ``...

    Spring系列面试题129道(附答案解析)

    - 如果Bean实现了BeanNameAware、BeanFactoryAware等接口,会调用相应的方法。 - 如果存在BeanPostProcessor,会调用它的postProcessBeforeInitialization方法。 - 如果Bean实现了InitializingBean接口,会调用...

    spring教程(ppt版)

    此外,bean可以实现特定接口(如BeanNameAware、BeanFactoryAware、ApplicationContextAware)以参与到生命周期的不同阶段。还有BeanPostProcessor接口,它的方法会在bean初始化前后被调用。当bean不再需要时,可以...

    com-spring-ioc-demo:源码主要是学习Spring IOC的原理,以及对Bean的注册及控制,主要运用以下类对Spring进行扩展学习:BeanPostProcessor,BeanFactoryAware,BeanNameAware,ApplicationContextAware,FactoryBean,BeanDefinitionRegistryPostProcessor,BeanFactoryPostProcessor,BeanPostProcessor,ResourceLoaderA

    com-spring-ioc-demo:源码主要是学习Spring IOC的原理,以及对Bean的注册及控制,主要运用以下类对Spring进行扩展学习:BeanPostProcessor,BeanFactoryAware,BeanNameAware,ApplicationContextAware,FactoryBean...

    几种spring获取bean的方法.txt

    在Web环境下,Spring提供了`WebApplicationContext`接口,它是`ApplicationContext`的子接口,专门用于Web应用。可以通过`WebApplicationContextUtils`工具类中的静态方法`getWebApplicationContext()`来获取当前Web...

    spring-aop源码解读

    ProxyFactoryBean是Spring AOP用于创建代理对象的主要工具,它实现了BeanFactoryAware、BeanClassLoaderAware和FactoryBean接口,使其能够利用IOC容器的功能来查找并应用Advice和目标对象。 配置和使用...

    spring面试总结

    - Spring容器的生命周期包括对象实例化、属性设置、接口回调(如`BeanNameAware`、`BeanFactoryAware`等)以及初始化和销毁方法的调用。 6. Spring生命周期的11步: - 对象实例化:创建Bean对象。 - 属性封装:...

Global site tag (gtag.js) - Google Analytics