要直接在自己的代码中读取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本身还是要注入的,呵呵
分享到:
相关推荐
最后,`AutowireCandidateResolver`和`BeanFactoryAware`接口分别提供了候选Bean的判断逻辑和BeanFactory的获取方式,这些在特定场景下能帮助我们实现更复杂的Bean管理。 综上所述,Spring中的Bean接口和注解为...
6. **BeanFactoryAware**:此接口使得Bean可以在运行时显式查找其依赖的其他对象。BeanFactory通过`setBeanFactory(BeanFactory beanFactory)`方法传递自身,使得Bean可以直接使用BeanFactory来获取依赖。然而,这种...
BeanFactoryAware接口是Spring框架中的一种 Aware接口,通过实现该接口,可以获取BeanFactory对象,从而获取bean对象。代码如下: @Service public class BeanFactoryHelper implements BeanFactoryAware { ...
`BeanFactoryAware`接口使得Bean可以被注入`BeanFactory`,而`ApplicationListener`接口则可以让Bean监听到应用上下文的刷新事件,从而在合适的时机执行动态注册逻辑。 ```java public class BeanFactoryAwareBean ...
3. 处理BeanNameAware和BeanFactoryAware接口:如果Bean实现了BeanNameAware或BeanFactoryAware接口,Spring会调用相应的方法,将Bean的ID和BeanFactory设置到Bean中。 4. BeanPostProcessor的前置处理:在Bean的...
在Spring框架中,Aware接口系列是其核心特性之一,它为Spring容器提供了向bean注入上下文信息的能力。这些接口让bean能够感知到Spring容器的存在,从而获取必要的服务或配置信息。下面我们将深入探讨Spring的Aware...
在Spring框架中,为了满足不同开发需求,提供了一系列的扩展接口。这些接口允许开发者自定义对象的生命周期行为,实现特定的功能或对Spring容器的行为进行干预。以下是对这些接口的详细解释: 1. **...
10. **Aware接口**:Spring提供了一系列的Aware接口,如BeanNameAware、BeanFactoryAware和ApplicationContextAware,这些接口使得Bean可以在运行时获取自身的一些信息,例如Bean的名字、所处的Bean工厂或...
5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 5.4.2.1. 注册用户自定义的PropertyEditor ...
其中,Spring Bean生命周期的管理是Spring框架的核心功能之一,它涉及Spring容器如何创建、配置以及销毁Bean的整个过程。理解Spring Bean的生命周期对于开发高效和可维护的Java应用至关重要。 Spring Bean生命周期...
Spring的核心之一是Spring容器,它负责管理应用程序中所有组件的生命周期和依赖关系。Spring容器中最为常见的组件是Bean,它是Spring容器管理的对象实例。 在Spring中,Bean的管理包含多个方面:创建Bean实例、配置...
通过实现 BeanFactoryAware 接口来获得 factory 可以获取 Spring 容器。 动态代理技术是指在运行时生成代理对象,以便在运行时动态地将横切逻辑和业务逻辑编织在一起。JDK 的动态代理主要涉及到 java.lang.reflect ...
然后,我们可以实现 BeanFactoryAware 接口,使用 setBeanFactory() 方法来设置 BeanFactory 对象。这样,我们就可以使用 getBeanFactory() 方法来获取 BeanFactory 对象,并使用它来获取指定名称的 Bean 对象。 ``...
- 如果Bean实现了BeanNameAware、BeanFactoryAware等接口,会调用相应的方法。 - 如果存在BeanPostProcessor,会调用它的postProcessBeforeInitialization方法。 - 如果Bean实现了InitializingBean接口,会调用...
此外,bean可以实现特定接口(如BeanNameAware、BeanFactoryAware、ApplicationContextAware)以参与到生命周期的不同阶段。还有BeanPostProcessor接口,它的方法会在bean初始化前后被调用。当bean不再需要时,可以...
com-spring-ioc-demo:源码主要是学习Spring IOC的原理,以及对Bean的注册及控制,主要运用以下类对Spring进行扩展学习:BeanPostProcessor,BeanFactoryAware,BeanNameAware,ApplicationContextAware,FactoryBean...
ProxyFactoryBean是Spring AOP用于创建代理对象的主要工具,它实现了BeanFactoryAware、BeanClassLoaderAware和FactoryBean接口,使其能够利用IOC容器的功能来查找并应用Advice和目标对象。 配置和使用...
- Spring容器的生命周期包括对象实例化、属性设置、接口回调(如`BeanNameAware`、`BeanFactoryAware`等)以及初始化和销毁方法的调用。 6. Spring生命周期的11步: - 对象实例化:创建Bean对象。 - 属性封装:...
- **BeanFactoryAware**:Bean 可以获取到创建它的 BeanFactory。 - **BeanNameAware**:Bean 可以获取到自己的名称。 - **FactoryBean**:一种特殊的 Bean,它返回另一个 Bean 的实例作为它的产品。 ##### 3.4 ...