BeanFactory
是String中比较基础的一个容器,这个容器接口定义在spring.beans
包下,其主要功能是给依赖注入(DI)提供支持。
在Spring中,有大量对BeanFactory
接口的实现,其中,最常使用的是XmlBeanFactory,这个容器可以从一个XML文件中读取元数据,由这些元数据来生成一个被配置化的系统和应用。
一般BeanFactory都是应用在资源非常宝贵的移动设备或者基于applet的应用当中,其他情况下都不常用BeanFactory,而是优先选择ApplicationContext
.
在代码中如何使用:
我们先创建一个普通的类,作为Bean对象。
package model;
public class HelloWorld {
private String message;
public void setMessage(String message){
this.message=message;
}
public void getMessage(){
System.out.println("Your Message : "+message);
}
}
然后在spring配置文件中存入这个Bean对象:
<beans>
<bean id="helloWorld" class="model.HelloWorld">
<property name="message" value="Hello BeanFactory!">property>
bean>
beans>
在测试类App主程序中使用这个Bean对象:
import model.HelloWorld;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
public class App {
public static void main(String[] args) {
BeanFactory factory= new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
HelloWorld obj=(HelloWorld)factory.getBean("helloWorld");
obj.getMessage();
}
}
第一步,我们利用BeanFactory()
去生成一个工厂Bean,然后用ClassPathResource()去加载在路径ClassPath路径下可用Bean的配置文件,然后BeanFactory会创建并初始化所有的Bean对象,也就是我们在配置文件中存入的Bean.
第二步,我们通过工厂Bean的getBean方法来获取业务对象,然后通过id查询配置文件中对应的Bean,将这个Bean对象强转为HelloWorld类,当我们获得这个对象后,就可以调用它的任何方法。
上面程序执行后,结果如下:
Your Message : Hello BeanFactory!
ApplicationContext
是BeanFactory的子接口,也被称为Spring的上下文,通过这个上下文对象,我们就可以获得配置文件中我们存入的Bean,这个上下文对象等同于上面的工厂Bean.spring.context
包下。ApplicationContext有三个经常使用的实现:
在代码中使用:
创建一个基本类,作为Bean对象:
package model;
public class HelloApplicationContext {
private String message;
public void setMessage(String message){
this.message=message;
}
public void getMessage(){
System.out.println("Your Message : "+message);
}
}
在XML配置文件中存入Bean:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<beans>
<bean id="helloAppCon" class="model.HelloApplicationContext">
<property name="message" value="Hello ApplicationContext!">property>
bean>
beans>
beans>
在测试类中读取出Bean对象,然后调用它的getMessage方法:
import model.HelloApplicationContext;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main(String[] args) {
ApplicationContext factory=new ClassPathXmlApplicationContext("spring-config.xml");
HelloApplicationContext obj=(HelloApplicationContext) factory.getBean("helloAppCon");
obj.getMessage();
}
}
第一步,通过ApplicationContext获取的spring的上下文对象,然后通过ClassPathXmlApplicationContext加载xml配置文件,创建并初始化所有的bean对象。
第二步,通过调用上下文对象的getBean方法,根据id查询得到具体的bean对象,然后调用它的getMessage方法。
上面程序执行后,结果如下:
Your Message : Hello ApplicationContext!