如何动态在spring mvc中增加bean

如何动态在spring mvc中增加bean,第1张

spring使用代码添加一个bean的方法是:1、打开eclipse,找到model包,右键new-Other:2、输入java,找到class:3、输入类名:4、定义属性并生成getter和setter

[引文]通常在struts2+spring的例子上,要想使用spring的Bean,可以在applicationContext.xml加上如下配置

<bean id="springBean" scope="prototype" class=""

<property name="name" value="chen"/</bean<bean id="myAction" scope="prototype" class=""

<property name="springBean" ref="springBean"/</bean如果是j2ee应用,启动web应用时将会自动加载ApplicationContext实例(Spring容器负责创建Bean实例)

一旦struts2的myAction实例化,其中的SpringBean也会被自动注入进来,从而达到使用SpringBean的目的。

[问题]但是仍有需要通过代码来调用SpringBean的情况:

1)对于不是由spring创建管理的类,如在java 代码中直接使用new去创建一个对象,并且想在这个对象中使用

SpringBean因为这个对象并不是由Spring容器创建管理的类,所以即使它有setter方法,容器的springBean也不会被注入。

2)动态更改springBean中的属性值,如在代码运行时,name值需要发生变动

3)对于一个独立的应用程序[解决]定义一个非Spring容器创建管理的类

public class NonSpringClass implements ServletContextAware {

private SpringBean springBean

//如果 testGetBean不是被Spring容器创建管理,即使它有setter方法,容器的springBean也不会被注入。

public void setSpringBean(SpringBean springBean){this.springBean=springBean}//利用ApplicationContext 从spring容器中获得springBean

//Spring有两个核心接口BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口,

//它们代表了Spring容器,Spring容器是产生Bean的工厂,用于管理容器中的Bean。

public NonSpringClass (){//ApplicationContext acx = new ClassPathXmlApplicationContext("applicationContext.xml")

ApplicationContext acx = new FileSystemXmlApplicationContext("src/WEB-INF/applicationContext.xml")

springBean=(SpringBean)acx.getBean("springBean")}}调用这个类的代码:

import com.NonSpringClass

public class TestCode {

private NonSpringClass nonSpringClass

//这样nonSpringClass里将包含Spring容器创建的springBean}}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11574361.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存