码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMyBatis-01

时间:2018-09-06 16:12:08      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:scope   开发   singleton   style   标识符   多个   种类   创建对象   nfa   

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注解分别用于指定初始化和销毁回调方法

SpringMyBatis-01

标签:scope   开发   singleton   style   标识符   多个   种类   创建对象   nfa   

原文地址:https://www.cnblogs.com/xslzwm/p/9598345.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!