Spring入门之两个bean容器的介绍

54 篇文章 0 订阅
30 篇文章 0 订阅
BeanFactory容器
在Spring中,有大量对BeanFactory接口的实现。其中,最常被使用的是XmlBeanFactory类。这个容器从一个XML文件中读取配置元数据,由这些元数据来生成一个被配置化的系统或者应用。
在资源宝贵的移动设备或者基于applet的应用当中, BeanFactory会被优先选择。否则,一般使用的是ApplicationContext,除非你有更好的理由选择BeanFactory。
BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身, BeanFactory 是类的通用工厂,它可以创建并管理各种类的对象


BeanFactory的初始化顺序:
1.创建配置文件

2.装载配置文件

3.启动Ioc容器

4.获取bean实例
通过 BeanFactory 启动 IoC 容器时,并不会初始化配置文件中定义的 Bean,初始化动作发生在第一个调用的时候
对于单实例的 Bean 来说,BeanFactory 会缓存 Bean 实例,所以第二次使用 getBean() 方法时就可以直接从 IoC 容器的缓存中获取 Bean 实例
BeanFactory容器的使用示例:
第一步利用框架提供的XmlBeanFactory() API去生成工厂bean以及利用ClassPathResource() API去加载在路径CLASSPATH下可用的bean配置文件。XmlBeanFactory() API负责创建并初始化所有的对象,即在配置文件中提到的bean。
第二步利用第一步生成的bean工厂对象的getBean()方法得到所需要的bean。 这个方法通过配置文件中的bean ID来返回一个真正的对象,该对象最后可以用于实际的对象。一旦得到这个对象,就可以利用这个对象来调用任何方法。
实现代码
bean类:
public class HelloSpring {

    private String message;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

beans.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<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-3.0.xsd">

        <!-- 配置bean -->
        <bean id="hello" class="org.spring.test.HelloSpring">
            <property name="message" value="成兮"></property>
        </bean>

</beans>

测试主程序
public class TestMain {


    //BeanFactory容器测试
    public static void main(String[] args){

        XmlBeanFactory beanfac = new XmlBeanFactory(new ClassPathResource("beans.xml"));

        HelloSpring test = beanfac.getBean("hello",HelloSpring.class);

        System.out.println(test.getMessage());
    }
}
在初始化 BeanFactory 时必须为其提供一种日志框架, 一般使用 Log4J,即在类路径下提供 Log4J 的配置文件,这 样,启动 Spring 容器时才不会报错
ApplicationContext容器
ApplicationContext 建立在 BeanFactory 基础之上,提供了更多面向应用的功能,它提供了国际化支持和框架事件体系,更易于创建实际应用
一般称 BeanFactory 为 IoC 容器,而称 ApplicationContext 为 应用上下文
ApplciationContext 面向使用 Spring 框架的开发者,几乎所有的应用场合都直接使用 ApplicationContext,而非底层的 BeanFactory
BeanFactory 在初始化容器时,并未实例化 Bean,直到第一次访问某个Bean 时才实例目标 Bean,而 ApplicationContext 则在初始化应用上下文时就实例化所有单实例的 Bean
ApplicationContext容器的两种常用实现类:
ClassPathXmlApplicationContext: 从类路径中加载配置文件
FileSystemXmlApplicationContext:从文件系统中加载配置文件
ApplicationContext容器的使用实例:
bean类:
public class HelloSpring {

    private String message;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

beans.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<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-3.0.xsd">

        <!-- 配置bean -->
        <bean id="hello" class="org.spring.test.HelloSpring">
            <property name="message" value="成兮"></property>
        </bean>

</beans>

测试主程序
public class TestMain {


    //ApplicationContext容器测试
    public static void main(String[] args){

        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

        HelloSpring test = beanfac.getBean("hello",HelloSpring.class);

        System.out.println(test.getMessage());
    }
}



转载来源:
Spring的IoC容器-Spring BeanFactory容器
BeanFactory和ApplicationContext的介绍
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值