首页 > 代码库 > Spring3.0官网文档学习笔记(四)--3.1~3.2.3

Spring3.0官网文档学习笔记(四)--3.1~3.2.3

3.1 Spring IoC容器与Beans简介
    BeanFactory接口提供对任意对象的配置;
    ApplicationContext是BeanFactory的子接口,整合了Spring Aop功能,消息资源控制,事件发布,应用层特殊的上下文(在web应用中)
    由IoC容器实例化、组装、管理的对象都是Bean
3.2 容器概述
    org.springframework.context.ApplicationContext代表Spring IoC容器,并且负责通过读取配置元数据来实例化、配置、组装Bean。配置元数据可以通过三种形式表示:xml,Java注释,Java code(这个不懂)
    在独立的环境中,实例化ClassPathXmlApplicationContext或FileSystemXmlApplicationContext对象。
3.2.1 配置元数据
    除了配置在xml文件中,还有两种方法:
    Annotation-based configuration: ?
    Java-based configuration: ?

    你可以使用Spring‘s integration with AspectJ配置不在IoC容器控制下的对象?

    基于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 id="..." class="...">
    <!-- collaborators and configuration for this bean go here -->
  </bean>

  <bean id="..." class="...">
    <!-- collaborators and configuration for this bean go here -->
  </bean>

  <!-- more bean definitions go here -->

</beans>
3.2.2 实例化一个容器

ApplicationContext context =
    new ClassPathXmlApplicationContext(new String[] {"services.xml", "daos.xml"});

   Note:第4章有更方便的机制读取XML文件?

3.2.2.1 基于XML配置的元数据的组成

<beans>

    <import resource="services.xml"/>
    <import resource="resources/messageSource.xml"/>
    <import resource="/resources/themeSource.xml"/>

    <bean id="bean1" class="..."/>
    <bean id="bean2" class="..."/>

</beans>
services.xml必须位于包含该文件的xml文件同个目录或者是在classPath目录下。

可以通过相对路径“../path”这种方式来配置文件路径,但是这方法并不推荐(用这种方式创建出来的是依赖文件是在当前应用的外部?)。尤其不推荐用于"classpath:"这样的URL中(运行时解决程序会选择“最近的”classpth,并查看它的父目录,导致找不到对应的xml文件)。

可以使用:"file:C:/config/services.xml"或"classpath:/config/services.xml"。但是要记住如果使用绝对路径的话,就存在耦合问题了。

3.2.3 使用容器

// create and configure beans
ApplicationContext context =
    new ClassPathXmlApplicationContext(new String[] {"services.xml", "daos.xml"});

// retrieve configured instance
PetStoreServiceImpl service = context.getBean("petStore", PetStoreServiceImpl.class);

// use configured instance
List userList service.getUsernameList();