SpringMyBatis-01

1、Spring简介

    1)Spring是一个开源的轻量级应用开发框架,其目的是用于简化企业应用程序的开发,降低侵入性

    2)Spring提供的IOC和AOP功能,可以将组件之间的耦合度降至最低,即解耦;便于系统的升级和维护

    3)Spring的本质是管理软件中的对象,即创建对象和维护对象之间的关系

2、Spring容器

    1)在Spring中,任何组件都可以当成Bean处理,通过容器管理

    2)Spring容器有BeanFactory和ApplicationContext两种类型

    3)Spring容器的实例化

        ApplicationContext继承自BeanFactory接口,拥有更多的企业级开发方法(推荐)

加载工程classpath下的配置文件实例化
String xml="配置文件路径";
ApplicationContext ac=new ClassPathXmlApplicationContext(xml);

     4)Spring容器的使用

1)首先在容器的配置文件spring.xml中添加Bean组件定义(Bean组件的类型即为包名如:com.entity.User)
<bean id="标识符" class="Bean组件的类型"></Bean>
2)然后在创建容器对象后,调用getBean方法获取Bean组件实例
getBean("标识符");

3)结合起来案例
ApplicationContext ac=new ClassPathXmlApplicationContext("spring.xml");
User user=ac.getBean("User",User.class);

        注:Spring容器默认调用无参构造器来实例化

3、Bean作用域

    Spring容器在实例化Bean时,可以创建以下作用域的Bean对象

    1)singleton

        在Spring容器中一个Bean定义对应一个实例对象,默认项

    2)prototype

        一个Bean定义对应多个实例对象

    3)request

        在一次HTTP请求中,一个Bean定义对应一个实例对象

    4)session

        在一次HTTP Session中,一个Bean定义对应一个实例对象

    注:Bean的作用域可以通过<bean>定义的scope属性指定

<!--Bean的作用域-->
<bean id="userOne" scope="singleton" class="com.entity.User"/>

4、Bean的生命周期

1)指定初始化回调方法
<bean init-method=""/>
2)指定销毁回调方法,仅适用于singleton模式的Bean
<bean destroy-method=""/>

    在<beans>标签中通过default-init-method属性,可以为容器中的<bean>指定初始化回调方法,也可以通过default-destroy-method属性为容器中的<bean>指定销毁回调方法

<!--Bean的生命周期-->
<bean id="exampleBean" class="com.entity.ExampleBean" init-method="init" destroy-mothod="destroy" scope="prototype"/>

5、Bean的延迟实例化

    默认行为是在容器实例化的同时将单行模式的Bean提前进行实例化

    延迟实例化操作:

        在<bean>生命时指定其属性lazy-init为true,一个延迟实例化的Bean将在第一次被用到时实例化

    注意:仅适用于单例模式

    在<beans>标签中通过default-lazy-init属性,可以为容器中的<bean>指定延迟实例化的特性

<!--bean的延迟实例化-->
<bean id="example" class="com.entity.ExampleBean" lazy-init="true"/>

6、基于注解的组件扫描

    1)什么是组件扫描

        指定一个包路径,Spring会自动扫描此包及其子包中的组件类,当发现组件类定义前有特定的注解标记时,就将此组件类纳入到Spring容器中管理,等价于原有的XML配置中的<bean>定义

        组件扫描可以替代大量XML配置的<bean>定义

        指定扫描类路径,使用组件扫描,首先需要在XML配置文件中指定扫描父级package路径

<context:component-scan base-package="指定扫描包路径"/>

容器会自动扫描指定包及其子包下所有的组件类,如果此组件类定义前有特定
的注解标记,则会将此组件类实例化为Bean对象

    2)自动扫描的注解标记

        @Component:通用注解

        @Repository:持久层组件注解

        @Service:业务层组件注解

        @Controller:控制层组件注解

    3)自动扫描组件的命名

        当一个组件在扫描过程中被检测到时,会生成一个默认的ID值,默认ID值为小写开头的组件名,也可以在注解标记中自定义ID值

    4)指定组件的作用域

        @Scope注解可以指定作用域,只需要在注解中提供作用域的名称即可

    5)指定初始化和销毁回调方法

        @PostConstruct和@PreDestroy注解分别用于指定初始化和销毁回调方法

posted @ 2018-09-06 14:56  不是一个世界的人  阅读(99)  评论(0编辑  收藏  举报