继上一篇文章<spring容器动态增加外部xml里的bean
> 这次分享给大家的是如何在spring容器中动态增加一个bean实例,而不是来自xml配置里的bean
public class MyBeanPost implements BeanFactoryPostProcessor{
private DefaultListableBeanFactory beanFactory;
@Override
public void postProcessBeanFactory(
ConfigurableListableBeanFactory beanFactory) throws BeansException {
this.beanFactory = (DefaultListableBeanFactory)beanFactory;
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition("xxxClassName");
builder.addPropertyReference("refBean11", "refBean11");//value是String类型,其实就是beanName
builder.addPropertyValue("property222", Object22);//value是object类型,与xml配置一样
this.beanFactory.registerBeanDefinition("myNewBean", builder.getBeanDefinition());
}
}
这个myNewBean可以实现spring的任何接口例如InitializingBean FactoryBean,然后这个bean还会被自动装配起来。
另外一种用法是
this.beanFactory.registerSingleton(beanName, singletonObject)
这个的话 是你把 singletonObject给new出来,一般比较简单的类可以这么使用。
分享到:
相关推荐
- **依赖注入(Dependency Injection, DI)**:Spring的核心特性,它允许外部环境(如Spring容器)来管理对象的创建和依赖关系。DI通过反转控制权,使得组件之间松耦合,易于测试和维护。 - **Bean工厂(Bean ...
而在IOC模式下,这个责任被“反转”到一个外部容器,即Spring容器。容器负责创建对象,管理它们的生命周期,并根据需要将依赖关系注入到对象中。这样,代码只需声明其依赖,而无需知道依赖的具体实现或如何获取依赖...
BeanFactoryPostProcessor接口是Spring框架提供的一个接口,用于扩展Spring容器的功能。该接口只有一个方法`postProcessBeanFactory`,该方法在容器加载完成之后被调用,可以用来改变容器中的配置或做一些初始化工作...
2. **依赖注入**:Spring容器会根据Bean之间的依赖关系来决定实例化顺序。如果一个Bean依赖于另一个Bean,那么被依赖的Bean会先被实例化。Spring使用“依赖倒置”的原则,使得控制权从对象内部转移到了外部的容器。 ...
依赖注入是Spring框架的一个核心特性,它允许将对象之间的依赖关系通过外部容器来管理,而不是由对象内部自行创建。这样做的好处是提高了代码的可测试性和可维护性,因为对象的依赖关系可以更容易地被模拟或替换。 ...
例如,在配置文件中添加了一个bean标签,并指定了id和class属性,Spring容器就会根据这个配置信息来创建对象实例。 IOC容器还提供了依赖注入的功能,可以将对象之间的关系维护到容器中,例如,ScheduleController...
IOC,即控制反转,是面向对象编程中的一个设计原则,它的主要思想是将对象的创建和管理权交给外部容器,而不是由对象自身负责。在Spring框架中,IOC容器负责管理对象的生命周期和依赖关系,通过配置文件或注解来定义...
这里,`propertyConfigurerForAnalysis`是`PropertyPlaceholderConfigurer`的实例bean,其作用是将`dbQuery.properties`中的键值对作为环境变量注入到Spring容器中。`classpath:`前缀表示该文件位于类路径下,即项目...
它是所有Spring容器的基类,为其他容器提供了基本的服务和功能。 ##### 3.2 ApplicationContext介绍 `ApplicationContext`是在`BeanFactory`基础上的增强版本,除了继承了`BeanFactory`的所有功能之外,还提供了...
然后,你可以使用注解如@Controller、@Service、@Repository和@Service来标记你的类,这些注解将被Spring容器自动扫描并管理。 在Web层,可以使用Spring MVC框架,通过定义DispatcherServlet和Controller来处理HTTP...
5. **Bean的生命周期**:Spring容器对Bean的生命周期进行管理,包括初始化、正常使用、销毁等阶段,开发者可以自定义生命周期回调方法以进行特定操作。 ### Spring AOP **面向切面编程(AOP)** 是Spring的另一个...
通过对IoC(Inversion of Control,控制反转)的实现,Spring容器将对象的创建和组装工作从应用代码中分离出来,使得应用更易于测试和维护。本文将从实现的角度,通过对外部接口、内部实现、组成部分和执行过程四个...
这样,Spring容器就能加载并解析这个外部XML文件,进而管理其中定义的Bean。 了解了基本用法后,我们来探讨一下Spring读取外部文件的工作原理。Spring的`ApplicationContext`类是通过`DefaultResourceLoader`来加载...
以上是Spring中基于XML的Bean配置的基本知识点,通过这些配置,我们可以精细控制Spring容器如何管理和实例化Bean,以及它们之间的依赖关系。随着Spring的发展,Java配置和注解配置逐渐成为主流,它们提供了更简洁、...
5. **AOP支持**:虽然这不是IoC容器的基本功能,但Spring的另一个亮点是面向切面编程(AOP),可以在仿制品中考虑添加简单版的AOP支持,如后置处理器(PostProcessor)。 6. **扩展性**:一个好的IoC容器应该易于...
控制反转(IoC)是一种设计原则,它将对象的创建和管理职责从应用代码中分离出来,转交给外部容器(在这种情况下是Spring容器)。这样,应用不再负责对象的创建和维护,而是由容器来控制对象的生命周期和对象间的...
实现这两个接口可以让Bean感知到Spring容器以及自己的Bean名称。 1.6.3 其他Aware接口 Spring提供了多个Aware接口,如ResourceLoaderAware、BeanClassLoaderAware等,用于让Bean感知到Spring容器的各种资源。 1.7 ...