用BeanFactoryAware接口,用BEAN的名称来获取BEAN对象
applicationContext-beans.xml
<bean id=
"beanFactoryHelper"
class
=
"com.cyjch.base.BeanFactoryHelper"
/>
BeanFactoryHelper.java
package com.cyjch.base; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; public class BeanFactoryHelper implements BeanFactoryAware { private static BeanFactory beanFactory; //BEAN工厂 @Override public void setBeanFactory(BeanFactory f) throws BeansException { this.beanFactory = f; } public static BeanFactory getBeanfactory() { return beanFactory; } }其它的实现类(可以继承BeanFactoryHelper并实现多个接口)
public class PeixunServiceImpl extends BeanFactoryHelper implements IPeixunService,Serializable{ BeanFactory bf = BeanFactoryHelper.getBeanfactory();//获取工厂 ... IPeixunDao peixunDAO = (PeixunDaoImpl) bf.getBean("peixunDao");//通过BEAN名称取BEAN IUserDao userdao = (UserDaoImpl) bf.getBean("userDao"); XxxService xxxService; getter/setter; XxxDao xxxDao; getter/setter; }
相关推荐
Spring Aware接口自定义获取bean的两种方式 Aware接口是Spring...在使用Spring编程时,需要根据bean的名称来获取相应的bean对象,这时候,可以通过实现BeanFactoryAware和ApplicationContextAware接口来满足需求。
这样,我们就可以使用 getBeanFactory() 方法来获取 BeanFactory 对象,并使用它来获取指定名称的 Bean 对象。 ```java public class ServiceLocator implements BeanFactoryAware { private static BeanFactory ...
最后,`AutowireCandidateResolver`和`BeanFactoryAware`接口分别提供了候选Bean的判断逻辑和BeanFactory的获取方式,这些在特定场景下能帮助我们实现更复杂的Bean管理。 综上所述,Spring中的Bean接口和注解为...
一旦获取到了`ApplicationContext`,就可以调用其`getBean()`方法来获取特定名称的Bean实例。 **示例代码:** ```java import org.springframework.web.context.WebApplicationContext; import org.spring...
`BeanFactoryAware`接口使得Bean可以被注入`BeanFactory`,而`ApplicationListener`接口则可以让Bean监听到应用上下文的刷新事件,从而在合适的时机执行动态注册逻辑。 ```java public class BeanFactoryAwareBean ...
接口注入是通过让类实现特定的接口来获取依赖;构造注入是在类的构造函数中注入依赖;属性注入则是通过setter方法来设置依赖。 3. **Spring的7大模块**:Spring由多个模块组成,包括Core Container(核心容器)、...
BeanFactory通过`setBeanFactory(BeanFactory beanFactory)`方法传递自身,使得Bean可以直接使用BeanFactory来获取依赖。然而,这种做法增加了Bean与Spring容器的耦合。 7. **BeanNameAware**:最后,BeanNameAware...
- 使用静态工厂方法实例化:这种方式通过调用一个静态方法来获取Bean实例,适用于简单工厂模式。 - 使用实例工厂方法实例化:类似于静态工厂方法,但工厂方法是非静态的,需要先创建工厂类的实例后再调用。 - ...
这些接口允许Bean获取容器的相关信息,如Bean的名称、类加载器、Bean工厂等。 - InitializingBean:对应初始化阶段,它提供了afterPropertiesSet方法供开发者实现Bean初始化逻辑。 - DisposableBean:对应销毁阶段...
3. **Bean接口回调**:如果Bean实现了特定的接口,如`BeanNameAware`、`BeanFactoryAware`或`ApplicationContextAware`,Spring会在适当的时候调用对应的回调方法。这些接口允许Bean获取其ID、BeanFactory引用或...
- 如果Bean实现了特定的Spring接口,如`BeanNameAware`,`BeanFactoryAware`,`ApplicationContextAware`,Spring会在适当的时间调用相应的方法。 - `BeanNameAware`的`setBeanName()`方法用于将Bean的ID传递给...
2. BeanFactoryAware:在`setBeanName`之后,Spring会调用`setBeanFactory`方法,将BeanFactory对象注入到Bean中,使Bean能够访问容器。 3. InitializingBean:这个接口提供了一个`afterPropertiesSet`方法,在所有...
容器本身也具备了极高的扩展性,开发者可以通过实现BeanPostProcessor接口来扩展Bean的生命周期。例如,可以在Bean初始化前后进行自定义的处理逻辑,这为开发者提供了很大的灵活性。 DefaultListableBeanFactory和...
BeanFactoryAware接口提供了一个方法`setBeanFactory(BeanFactory beanFactory)`,允许bean获取到当前的BeanFactory实例。这样,bean就能在运行时动态地查找和依赖其他bean,或者利用BeanFactory提供的功能,如工厂...
实现这个接口的类能够在Bean加载过程中获取到Spring应用上下文`ApplicationContext`,从而可以访问容器中的其他Bean和服务,如读取配置信息、发布事件等。 4. **BeanFactoryAware接口**: `BeanFactoryAware`接口...
为了解决上述问题,我们可以让 singleton Bean 实现 BeanFactoryAware 接口,从而能够访问容器,然后使用容器来获取 prototype Bean 的实例。例如,我们可以在 Book 类中实现 BeanFactoryAware 接口,并在 ...
在这个阶段,Spring容器会使用反射机制来实例化Bean,创建一个新的Bean对象。 3. Bean属性注入:Bean实例化完成后,利用反射技术实现属性及依赖Bean的注入。 在这个阶段,Spring容器会将Bean的属性值和依赖Bean...
通过这两个接口,我们可以获取当前bean的名称和工厂。 ``` public class Person implements BeanNameAware, BeanFactoryAware { private String name; public Person(){ System.out.println("调用构造器为属性值...
- **BeanFactoryAware**:该接口的`setBeanFactory`方法会被Spring容器回调,将当前的`BeanFactory`实例传递给bean,便于bean访问容器内的其他bean。 - **ApplicationContextAware**:此接口的`...