http://uu011.iteye.com/admin/blogs/new
spring-动态装配bean(2010-11-07 22:18:32)转载▼标签: 杂谈 分类: JavaEE
动态装配
上面的装配都是我们在配置文件中进行配置,框架会加载配置文件,然后向它的工厂中加入对应的对象,我们通过getBean来获得对象,但这些对象都是事先定义好的,我们有时候要在程序中动态的加入对象.因为如果采用配置文件,我们要加入对象的话,还要重启服务,如果我们想要避免这一情况就得采用动态处理bean,包括:动态注入,动态删除;
动态注入
ApplicationContext ctx = (ApplicationContext) ActionContext.getContext().getApplication().get(
WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
DefaultListableBeanFactory acf = (DefaultListableBeanFactory) ctx
.getAutowireCapableBeanFactory();
先得到工厂.
XmlBeanFactory factory = new XmlBeanFactory(new FileSystemResource(
newFile));
再得到要加入的新bean所在的工厂.因为新的bean可能是在一个文件中描述的.所以可以通过这种方法来得到,当然如果有其他方式也可以,这里得到这个factory是为了方便下面得到它的定义:definition.
acf.registerBeanDefinition(beanId, factory.getMergedBeanDefinition(beanId));
再注入新的bean.这里要传入一个beanId就是我们以后要通过getBean(beanId)来得到对象中的beanId.另外还要一个该bean的definition.通过前面的factory中获得.
这样就动态注入了.
动态删除
ApplicationContext ctx = (ApplicationContext) ActionContext.getContext() .getApplication().get( WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
DefaultListableBeanFactory acf = (DefaultListableBeanFactory) ctx.getAutowireCapableBeanFactory();
if(acf.containsBean(beanId)) {
acf.removeBeanDefinition(beanId);
分享到:
相关推荐
Beans模块则实现了bean的定义、实例化、装配和管理。 2. **Data Access/Integration**:这个模块支持数据访问,包括JDBC、ORM(Object-Relational Mapping)、OXM(Object-XML Mapping)和JMS(Java Message ...
`spring-beans-3.0.xsd` 文件定义了 Spring 容器如何读取并解析 XML 配置文件,来实例化、装配和管理 beans。在这个文件中,你可以定义 bean 的 id、class、属性、依赖注入等。通过版本号 3.0,我们可以看出这是针对...
同时,Spring还支持注解驱动的开发,比如@Autowired用于自动装配依赖,@Service、@Repository和@Controller用于标记服务、数据访问和控制器类。 在实际开发中,Spring Framework还与Spring Boot结合使用,后者基于...
Spring框架允许开发者通过XML配置来装配bean,这些XML配置文件遵循特定的schema。此压缩包提供了所有schema文件,比如`beans.xsd`、`context.xsd`等,它们定义了如何使用XML进行bean的声明、属性的设置以及依赖关系...
以上就是Spring使用注解方式装配Bean的基本过程和关键注解的介绍。通过这种方式,我们可以轻松地管理Bean的生命周期,实现依赖注入,以及对Bean的其他配置,极大地提高了代码的可维护性和灵活性。在实际项目中,结合...
- **更好的类型安全**:增强了类型安全的Bean装配,减少了因类型不匹配导致的运行时错误。 - **反应式编程支持**:Spring 4.3引入了对Reactor的支持,为未来的反应式编程模式打下基础。 - **HTTP/2支持**:Spring...
首先,Spring-3.0.xsd是Spring XML配置的基石,它定义了一系列元素和属性,使得开发者能够以声明式的方式定义Bean、依赖注入、AOP代理、事务管理等核心功能。在Spring 3.0版本中,为了提升可读性和可维护性,引入了...
此外,Spring的容器是整个框架的核心,它管理所有bean的生命周期。在4.2.0版本中,容器的启动速度得到了提升,同时增强了对 Profiles 的支持,使得环境特定的配置变得更加容易。 文档方面,`spring-framework-4.2.0...
在Spring框架中,Bean配置是核心概念之一,它关乎到对象的创建、初始化、装配以及管理。本节我们将深入探讨Spring中的Bean配置,主要关注如何通过XML、注解以及Java配置方式来管理Bean。 首先,让我们从XML配置说起...
通过阅读`@Autowired`、`@PostConstruct`、`@PreDestroy`等注解的实现,我们可以了解到Spring如何进行自动装配。同时,对于`BeanDefinition`、`BeanPostProcessor`等关键接口的注释,能帮助我们深入理解bean的生命...
`spring-context`包含了强大的Spring表达式语言(SpEL),它允许在运行时对bean和属性进行动态查询和修改。SpEL可以用在注解的值、bean的属性绑定以及`ExpressionEvaluator`的表达式解析等多个场景。 综上所述,`...
Spring是什么呢?首先它是一个开源的项目,而且目前非常活跃...它实现了很优雅的MVC,对不同的数据访问技术提供了统一的接口,采用IOC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transaction Management
在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...
在2.5.6版本中,DI通过@Autowired注解实现,允许自动装配bean的依赖关系,减少了手动配置的工作量。同时,BeanFactory和ApplicationContext接口是Spring容器的基石,它们管理着对象的生命周期和依赖关系。 其次,...
- `spring-beans.jar`:实现了bean的定义、创建、装配和管理。 - `spring-context.jar`:扩展了`spring-core`,提供了与企业服务集成的能力,如事件、国际化、资源访问等。 - `spring-aop.jar`:实现了面向切面...
6. **Autowiring-mode**:定义了如何自动装配Bean。Spring支持按类型、按名称等多种自动装配模式。 7. **Lazy-initialization-mode**:懒加载模式,表示Bean是否在容器启动时立即创建,还是在首次请求时创建。 8. ...
3. `@Autowired`:这个注解用于自动装配Bean的依赖。Spring会根据类型或名称找到合适的Bean进行注入。例如: ```java @Service public class MyService { @Autowired private MyDependency myDependency; // ... ...
spring-beans:Bean工厂与装配 spring-context:上下文,即IOC容器 spring-context-support:对IOC的扩展,以及IOC子容器 spring-context-indexer:类管理组件和Classpath扫描 spring-expression:表达式语句 切面编程: ...
2. 控制反转:IoC是指应用程序的控制权从应用程序本身转移到框架,Spring容器根据配置文件动态地创建、装配和管理对象。这种设计模式使得组件之间解耦,降低了系统复杂度。 三、核心组件分析 1. ...