Spring学习手记

Spring概述

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架:
·从大小与开销两方面而言Spring都是轻量级的
·通过控制反转(IoC)的技术达到松耦合的目的
·提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统服进行内聚性的开发
·包含并管理应用对象的配置和生命周期,这个意义上是一种容器
·将简单的组件配置、组合成为复杂的应用,这个意义上是框架

Spring作用

·容器
·提供了对多种技术的支持,如(JMS,MQ支持,UnitTest等)
·AOP(事物,日志等)
·提供了众多方便应用的辅助类(JDBC Template等)
·对主流应用框架(Hibernate等)提供了良好的支持

Spring适用范围

·构建企业应用(SpringMVC+Spring+Hibernate/ibatis)
·单独使用Bean容器(Bean管理)
·单独使用AOP进行切面处理

IoC(控制反转)

    控制权的转让,应用本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护,而具体被反转的是获得依赖对象的过程,控制被反转之后,获得依赖对象的过程由自身管理变为了由IoC容器主动注入,简单的来说,就是不需要我们自己去实例化所需要的对象,而是通过Spring的外部容器来帮我们去创建,需要使用的时候,直接从容器中取出来就好了。

DI(依赖注入)

    所谓依赖注入,就是由IoC容器在运行期间,动态的将某种依赖关系注入到对象之中,也就是说在创建对象的同时,建立起对象与对象之间的依赖关系。

Spring配置文件详解

    applicationContext.xml:这是Spring的默认配置文件,当容器启动时找不到指定的配置文档时,将会尝试加载这个默认的配置文件。
<?xml version="1.0" encoding="UTF-8"?>
<beans
|---整个配置文件的根节点,包含一个或多个的Bean元素
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|---以上两条为基本的命名空间定义
xmlns:aop="http://www.springframework.org/schema/aop"
|---启用AOP功能时的命名空间
xmlns:tx="http://www.springframework.org/schema/tx"
|---启用声明事物时的命名空间
xmlns:context="http://www.springframework.org/schema/context"
|---启用自动扫描或注解装配时的命名空间
xmlns:task="http://www.springframework.org/schema/task"
|---启用定时任务时的命名空间
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd
"
|---与上述命名空间定义配套的schema定义文件的装载路径
>

<!-- 开启注解处理器 -->
<context:annotation-config/>

<!-- 开启组件自动扫描,扫描路径由base-package属性指定 -->
<context:component-scan base-package="com.mogon.test"/>

<!-- 开启注解声明定时任务 -->
<task:annotation-driven/>

<!-- 基于@AspectJ切面的注解处理器 -->
<aop:aspectj-autoproxy/>

<!-- 使用class属性指定类的默认构造方法创建一个实例Bean,名称由id属性指定 -->
<bean id="Bean实例名称" class="Bean类全名"/>

<!-- scope属性为prototype时表示每次将生成新的实例,即原型模式 -->
<bean id="Bean实例名称" class="Bean类全名" scope="prototype"/>

<!-- init-method属性用于指定对象实例化后要调用的初始化方法 -->
<!-- destroy-method属性用于指定对象在销毁时要调用的方法 -->
<bean id="Bean实例名称" class="Bean类全名" init-method="方法名" destroy-method="方法名"/>

<!-- property标签用于对Bean实例中的属性进行赋值-->
<bean id="Bean实例名称" class="Bean类全名">
    <!-- 对于基本数据类型的值可由value属性直接指定 -->
    <property name="Bean类中的属性名称" value="直接指定属性值"/>
    <!-- 而ref则表示对其他Bean实例的引用 -->
    <property name="Bean类中的属性名称" ref="要引用的Bean名称"/>

    <property name="Bean类中的属性名称">
        <!-- 创建一个内部匿名Bean实例赋值给指定的属性,该匿名Bean实例无法被外界访问 -->
        <bean class="Bean类全名"/>
    </property>

    <property name="Bean类中的Set类型属性名称">
    <!-- set标签用于创建一个Set类型的实例赋值给指定的Set类型属性,Set实例中的元素通过value或ref子标签指定。 -->
        <set>
            <!-- 对于基本数据类型的元素可由value标签生成 -->
            <value>set中的元素</value>
            <!-- 如果需要引用其他Bean实例作为Set元素的话,可由ref标签指定 -->
            <ref bean="要引用的Bean的名称"/>
        </set>
    </property>

    <property name="Bean类中的List类型属性名称">
    <!-- List标签用于创建一个List类型的实例赋值给指定的List类型属性,List实例中的元素通过value或ref子标签指定。 -->
        <list>
            <!-- 对于基本数据类型的元素可由value标签生成 -->
            <value>List中的元素</value>
            <!-- 如果需要引用其他Bean实例作为List元素的话,可由ref标签指定 -->
            <ref bean="要引用的Bean的名称"/>
        </list>
    </property>

    <property name="Bean类中的Map类型属性名称">
    <!-- Map标签用于创建一个Map类型的实例赋值给指定的Map类型属性,Map实例中的元素通过entry子标签指定。 -->
        <map>
            <!-- Map元素的键由entry标签的key属性直接指定,值则可由value或ref子标签指定 -->
            <entry key="map元素的key">
                <!-- 对于基本数据类型的元素可由value标签生成 -->
                <value>map元素的value</value>
            </entry>
            <entry key="map元素的key">
                <!-- 如果需要引用其他Bean实例的话,可由ref标签指定 -->
                <ref bean="要引用的Bean名称"/>
            </entry>
        </map>
    </property>

    <property name="Bean类中的Properties类型属性名称">
    <!-- 创建一个Properties类型的实例赋值给指定的Properties类型属性 -->
        <props>
            <!-- Properties实例中的属性元素由prop标签生成,属性项元素的键由key属性指定,属性项元素的值可直接放置在prop标签体中 -->
            <prop key="properties元素的key">properties元素的value</prop>
        </props>
    </property>

    <property name="Bean类中要初始化为null的属性名称">
        <!-- null标签用于给需要赋null值的属性进行赋null值 -->
        <null/>
    </property>
</bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值