Spring3.0学习札记一Spring IOC控制反转(1)

3 篇文章 0 订阅

1) IOC概念介绍

控制反转(Inverse of Control,IOC)是Spring容器的内核。所谓IOC,就是通过容器来控制业务对象之间的依赖关系,而非传统实现中由代码直接操控。

2)BeanFactory和ApplicationContext

  BeanFactory是Spring框架最核心的接口,应用上下文ApplicationContext建立在BeanFactory之上,提供了更多面向应用的功能,面向Spring框架的开发者,几乎所有的应用场合都直接使用ApplicationContext而非底层的BeanFactory。
2.1 BeanFactory
  使用Spring配置文件为Car提供配置信息,然后通过BeanFactory装载配置文件,启动Spring IOC容器。
    beans.xml: 配置文件
    <beans>
        <bean id="car1" class="com.smart.Car"
            p:color="黑色"
            p:size ="100" />
    </beans>
 再通过XmlBeanFactory实现类启动Spring IOC容器。
    ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    Resource res = resolver.getResource("classpath:com/smart/beanfactory/beans.xm");
    BeanFactory bf = new XmlBeanFactory(res);
    Car car = bf.getBean("car",Car.class);
XmlBeanFactory通过Resource装载Spring配置信息并启动IOC容器,然后就可以通过BeanFacoty#getBean(beanName)方法从IOC容器中获取Bean了。

注意:在初始化BeanFactory时,必须为其提供一种日志框架,如Log4j,即在类路径下提供Log4j配置文件,这样启动Spring容器才不会报错。

2.2 ApplicationContext(着重类注解,WebApplicationContext类体系结构)
  和基于XML文件配置方式相比,基于类注解的配置方式更灵活,更容易让开发者控制Bean的初始化过程。Spring为基于类注解的配置提供了专门的ApplicationContext实现类:AnnotationConfigApplicationContext。         

WebApplicationContext类体系结构:

    WebApplicationContext是专门为Web应用准备的,它允许从相对于Web根目录的路径中装载配置文件,完成初始化工作。从WebApplicationContext中可以获得ServletContext的引用,整个Web应用上下文对象将作为属性放置到ServletContext中,以便Web应用环境可以访问Spring应用上下文。
    WebApplicationContext的初始化方式和BeanFactoy、ApplicationContext不同,因为WebApplicationContext需要ServletContex实例——即它必须在拥有Web容器的前提下才能启动:可在web.xml中配置启动的Servlet或定义Web容器监听器(ServletContextListener)。
org.springframework.web.context.ContextLoaderServlet。
org.springframework.web.context.ConextLoaerListener

两者内部都实现类启动WebApplicationContext实例的逻辑,用户只要根据Web容器的情况选择一个,并在web.xml中完成配置就可以了。

<!--通过Web容器监听器引导-->
<!--指定配置文件-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/viewspace-dao.xml,/WEB-INF/viewspace-service.xml</param-value>
</context-param>
<!--声明Web容器监听器-->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

或者

<!--通自启动的Servlet引导-->
<!--指定配置文件-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/viewspace-dao.xml,/WEB-INF/viewspace-service.xml</param-value>
</context-param>
<!--声明自启动的Servlet-->
<servlet>
    <servlet-name>springContextLoaderServlet</servlet-name>
    <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
</servlet>
   由于WebApplicationContext需要使用日志功能,用户可以将Log4J的配置文件放置到类路径WEB-INF/classes下,只是Log4J引擎即可顺利启动。
   Spring为启用Log4J引擎提供了两个类似于启动WebApplicationContextg的实现类:Log4jConfigServlet和Log4jConfigListener,保证在装载Spring配置文件前先装载Log4j配置信息。
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/viewspace-dao.xml,/WEB-INF/viewspace-service.xml</param-value>
</context-param>
<!--指定log4j配置文件位置-->
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<!--装载Log4j配置文件的自启动Servlet-->
<servlet>
    <servlet-name>log4jtLoaderServlet</servlet-name>
    <servlet-class>org.springframework.web.util.log4jLoaderServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet>
    <servlet-name>springContextLoaderServlet</servlet-name>
    <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>
2.3 Resource资源加载

为了访问不同类型的资源,Spring提供了一强大的加载资源的机制,不但能够通过”classpath:”、”file:“等地质前缀识别不同的资源类型,还支持Ant风格带通配符的资源地址。
资源类型的地址前缀

Ant风格资源地址支持3种匹配符:

  • ?:匹配文件名中的一个字符 classpath:com/t?st.xml
  • *: 匹配文件名中的任一个字符 file:D:/conf/*.cml
  • **:匹配多层路径 classpath:com/**/test.xml
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值