Spring学习手记

来源:互联网 发布:cs1.6弹道优化参数 编辑:程序博客网 时间:2024/06/03 12:48

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.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://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
原创粉丝点击