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

  • 相关阅读:
    计蒜客 聪明的班主任(思维)
    codeforces 456 E. Civilization(并查集+数的直径)
    codeforces 456 D. A Lot of Games(字典数+博弈+思维+树形dp)
    codeforces 233 D. Table(思维+dp )
    codeforces 233 C. Cycles(贪心+思维)
    codeforces 814 D. An overnight dance in discotheque (贪心+bfs)
    codeforces 814 C. An impassioned circulation of affection(二分+思维)
    codeforces 813 D. Two Melodies(dp)
    Atcoder F
    Java正则表达式
  • 原文地址:https://www.cnblogs.com/xslzwm/p/9598345.html
Copyright © 2020-2023  润新知