spring手动注入bean springbean的注入
spring的ioc注入方式有几种?
//它们代表了Spring容器,Spring容器是产生Bean的工厂,用于管理容器中的Bean。一、Set注入
spring手动注入bean springbean的注入
spring手动注入bean springbean的注入
二、构造器注入
三、静态工厂的方法注入
内容拓展:
一、Set注入
1、这是最简单的注入方式,设有一个SpringAction,类中需要实例化一个SpringDao对象,那么就可以定义一个private的SpringDao成员变量,然后创建SpringDao的set方法(这是ioc的注入入口)。
2、随后编写spring的xml文件, 标签指定SpringDao。 标签中的name就是SpringAction类中的SpringDao属性名,ref指下面 1、这种方式的注入是指带有参数的构造函数注入,看下面的例子,我创建了两个成员变量SpringDao和User,但是并未设置对象的set方法,所以就不能支持种注入方式,这里的注入方式是在SpringAction的构造函数中注入,也就是说在创建SpringAction对象时要将SpringDao和User两个参数值传进来。 2、在XML文件中同样不用 的形式,而是使用 三、静态工厂的方法注入 1、静态工厂顾名思义,就是通过调用静态工厂的方法来获取自己需要的对象,为了让spring管理所有对象,我们不能直接通过"工程类.静态方法()"来获取对象,而是依然通过spring注入的形式获取。 [引文]通常在struts2+spr2、同样看关键类,这里我需要注入一个FactoryDao对象,这里看起来跟种注入一模一样,但是看随后的xml会发现有很大别。ing的例子上,要想使用spring的Bean,可以在applicationContext.xml加上如下配置 一旦struts2的myAction实例化,其中的SpringBean也会被自动注入进来,从而达到使用SpringBean的目的。 [问题]但是仍有需要通过代码来调用SpringBean的情况: 1)对于不是由spring创建管理的类,如在ja 代码中直接使用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的子接口, 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 { //这样nonSpringClass里将包含Spring容器创建的springBean}}spring容器已经启动,我怎么动态的加载里面的某个bean
private NonSpringClass nonSpringClass;
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。