`

通过代码方式动态注入bean

阅读更多

今天遇到一个需要动态修改springContext的需求,是一个在Controller层修改bean。

具体怎么做看代码。

 

//获取spring的上下文
WebApplicationContext app = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());

//获取bean工厂
DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory)app.getAutowireCapableBeanFactory();
//初始化bean
GenericBeanDefinition messageSourceDefinition = new GenericBeanDefinition();
//初始化bean参数
Map<String , Object> properties= new HashMap<String, Object>();
properties.put("id", 1);
properties.put("name", "2");

//设置bean的类型
messageSourceDefinition.setBeanClass(Bean.class);
//设置bean
messageSourceDefinition.setPropertyValues(new MutablePropertyValues(properties));
//注册bean
beanFactory.registerBeanDefinition("bean", messageSourceDefinition);

 按上述代码就可以管理bean配置了,但是这里有一个问题,就是没有涉及到bean的生命周期。

 

 

参考链接:

http://www.cesclub.com/bw/jishuzhongxin/Webjishu/2012/0320/25418.html

http://www.blogjava.net/killme2008/archive/2007/04/20/112160.html

 

 

分享到:
评论

相关推荐

    通过@Autowired注解注入bean的顺序,以及@bean注入.rar

    让我们深入探讨这两个注解的工作原理,以及它们在注入bean时的顺序。 `@Autowired`注解由Spring提供,用于自动装配bean的依赖。当我们在字段、构造函数、方法或方法参数上使用`@Autowired`时,Spring会自动查找与所...

    动态的装配bean,注入到Controller中

    在题目提供的ApplicationContext.xml文件中,你可以定义一个或多个bean,然后在Controller中通过@Autowired注解来注入这些bean。例如: ```xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:...

    Spring定义bean的三种方式和自动注入

    `@Autowired`注解则更加智能,它会根据属性类型找到合适的Bean进行注入,如果存在多个匹配的Bean,可以通过`@Qualifier`注解指定特定的Bean。在上述例子中,`Student`类中的`teacher`字段使用`@Autowired`注解,...

    spring依赖注入bean

    综上所述,Spring 的依赖注入和 Bean 管理不仅限于 Web 应用,也可以方便地应用于 Java Application 中,通过 XML 或注解配置来实现组件间的解耦,提高代码质量。这个示例项目 `test` 可能包含了实现上述功能的代码...

    消息队列监听器无法注入bean的问题解决

    在IT行业中,消息队列(Message Queue,...总之,解决“消息队列监听器无法注入bean”的问题需要从配置、代码和依赖注入等多个角度进行排查。在实际操作中,务必细心检查每一个环节,以确保所有组件能够正常协同工作。

    Spring-注入依赖,AOP,自动注入Bean

    在Spring框架中,依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)是两大核心特性,同时自动注入Bean也是Spring管理对象的一种常见方式。让我们深入探讨这些概念。 首先,...

    关于spring boot中几种注入方法的一些个人看法

    在使用 @Autowired 之前,我们对一个 bean 配置起属性时,是使用 属性名" value=" 属性值"/&gt; 的方式来配置,比较繁琐,而且代码比较多。在 Spring 2.5 引入了 @Autowired 注释,我们平常直接引用的时候很少注意这些...

    Spring bean 动态注册,jar包热替换

    spring的bean动态加载则需要对相应的bean进行动态注册,以及jar与class文件动态加载。测试示例中是spring boot 的部分代码,动态加载的内容为接口实现类,且初始化时加载本地的实现类,动态加载后改为非程序加载目录...

    Spring为IOC容器注入Bean的五种方式详解

    Spring为IOC容器注入Bean的五种方式详解 Spring 框架中,IOC(Inverse of Control,控制反转)容器是核心组件之一,用于管理 Bean 的生命周期。在 Spring 中,IOC 容器可以通过五种方式来注入 Bean,本文将对这五...

    day38 11-Spring的Bean的属性的注入:对象属性

    - 尽可能使用类型安全的注入,避免使用`@Value`注入Bean,除非必要。 7. **Spring的源码分析** - 深入源码可以帮助我们更好地理解Spring是如何处理属性注入的。例如,`DefaultListableBeanFactory`类中的`...

    Spring动态加载bean后调用实现方法解析

    在本文中,我们将通过一个示例代码,详细介绍如何使用 Spring 的动态加载 bean 功能来调用实现方法,并解析该过程的每一个步骤。 首先,我们需要在 pom.xml 文件中引入 Spring 的依赖项,以便使用 Spring 的功能。...

    详解SpringBoot 多线程处理任务 无法@Autowired注入bean问题解决

    SpringBoot 多线程处理任务中无法@Autowired注入bean问题解决 在 SpringBoot 应用程序中,多线程处理任务是一个常见的场景,但是,在多线程处理任务中无法使用 @Autowired 注入 bean,这是一个常见的问题。今天,...

    Spring (bean怎样注入值)学习实例

    在Spring框架中,Bean的注入是其核心特性之一,它允许开发者通过声明式的方式管理对象的依赖关系。本文将深入探讨如何在Spring中通过XML配置文件对Bean进行值的注入,包括List、Set和Map等集合类型的注入。 首先,...

    spring bean的生命周期测试代码

    这可以通过setter方法、构造器注入、字段注入等方式完成。 3. **初始化**:在所有属性注入完成后,Spring会调用声明为`init-method`的指定初始化方法,或者带有`@PostConstruct`注解的方法。这是一个配置Bean行为的...

    Spring 实例化Bean的三种方式

    本文将深入探讨Spring中实例化Bean的三种主要方式:构造器注入、静态工厂方法注入以及实例工厂方法注入。 #### 1. 构造器注入(Constructor Injection) 构造器注入是指通过调用Bean类的构造器来创建Bean实例。...

    Mybatis的Mapper方式整合elasticsearch的DSL调用,基于接口和代理生成bean注入的方式进行调用

    3. **配置Bean注入**:在Spring配置中,将生成的代理类作为一个Bean注入到需要使用Elasticsearch查询的地方。这样,每次调用`EsSearchMapper`的方法时,实际上是在调用代理类的方法。 4. **实现DSL构建**:在代理类...

    自定义注解得使用,模拟spring通过注解方式创建bean实例

    本篇将深入探讨如何自定义注解并模拟Spring通过注解方式创建bean实例。 首先,了解注解(Annotation)在Java中的角色。注解是一种元数据,它提供了在源代码中添加信息的方式,这些信息可以被编译器或运行时环境读取...

    EJB3.0源代码,包含会话Bean,实体Bean,还有消息Bean

    - **Java Persistence API (JPA)**: EJB 3.0中,实体Bean通常与JPA一起使用,JPA提供了一种统一的方式来访问和操作数据库,通过`@Table`, `@Id`, `@Column`等注解定义映射关系。 3. **消息Bean (Message-driven ...

    Spring - -setter方式 向bean中注入各种类型的值

    6. **使用`@Value`注解**:除了注入bean,`@Value`还可以用于注入属性值,包括硬编码的值、环境变量、系统属性,甚至SpEL表达式。 7. **属性文件的值注入**:Spring允许从属性文件中读取值并注入bean。这通常与`@...

    day38 13-Spring的Bean的属性的注入:SpEL注入

    Spring的SpEL注入极大地增强了我们配置Bean的能力,使得我们可以动态地计算值,访问系统环境变量,甚至执行复杂的逻辑。同时,它与Spring的其他特性,如AOP(面向切面编程)和Bean的生命周期管理,无缝集成,提供了...

Global site tag (gtag.js) - Google Analytics