zoukankan      html  css  js  c++  java
  • Spring简介

    一、Spring是什么

    1. Spring框架是一个Java平台,帮助开发人员封装了开发中的基础性的通用问题,让开发人员专注于应用程序的开发

    2. Spring的主要模块有:核心容器、数据访问/集成、事务、Web(MVC)、AOP、消息和测试模块

    二、控制反转(IOC)和依赖注入(DI)

    1. 控制反转:一个对象的实例化B本来是由另一个类A控制的,现在把这个控制权交出去,由别人来控制

    2. 依赖注入:对象A依赖另一个对象B,对象B可以在编译阶段就实例化好,并在使用的时候注入到调用方A,而不在调用方A里实例化

    3. 依赖注入的方式:构造器注入(通过构造函数的参数传入)、setter方法注入(通过setter方法的参数传入)、接口注入(Spring中不使用这种方式)

    三、Spring框架中的IoC容器

    1. IoC容器通过读取配置来创建对象,并管理对象的生命周期

    2. 两种IoC容器

    a. BeanFactory:可以配置任何类型的对象,将bean实例化,是Spring IoC的具体实现

    b. ApplicationContext:对BeanFactory进行了扩展,支持事件和监听器

    ApplicationContext context = new ClassPathXmlApplicationContext(“bean.xml”); //相对路径
    ApplicationContext context = new FileSystemResource(“C:acean.xml”); //绝对路径

    3. 实现机制:工厂模式+反射

    四、Spring Bean

    1. 在配置文件中配置,由Spring IoC容器创建实例,而不是由应用程序创建实例,是程序的主要的对象

    2. 三种配置方式

    a. 基于XML的配置,<bean>标签配置,指定某个类是bean

    <bean id="aClass" class="com.test.AClass"/>

    b. 基于注解的配置,在类上使用注解,在配置文件里自动扫描,即开启自动装配bean

    <context:annotation-config/> 也打开了注解的自动装配
    <context:component-scan base-package=”pagkage1[,pagkage2,…,pagkageN]”/>

    或者
    <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

    c. 基于Java API的配置:在Java类上使用@Bean & @Configuration注解

    3. 内部bean:当一个类A里使用了另一个类B,将他们声明为bean时,将B用作A的属性,B声明的bean为内部bean

    4. 作用域:最常用的是singleton和prototype

    a. singleton:每个bean都是单例,是默认的作用域

    b. prototype:每次请求都会产生一个新的实例

    c. 单例bean某种程度上是线程安全的,但bean需要有状态时,不是线程安全的

    五、Spring Bean的装配

    1. bean的装配:Spring容器使用依赖注入把bean都绑定在一起

    2. 自动装配:通过检查BeanFactory的内容,让Spring自动解析bean的协作者

    3. 自动装配的模式

    a. 默认为no,没有自动装配,使用显式bean引用,进行装配

    b. byName,根据bean的名称注入对象依赖项

    c. byType,根据类型注入对象依赖项

    d. 构造函数

    e. 自动检测

    <context:annotation-config/>

    六、Spring Bean的生命周期:创建->使用->销毁

    七、注解

    1. @Required:用于setter方法,必须要设置此属性

    2. @Autowired:自动装配依赖的对象,是Spring级别的,可以作用于成员变量、setter方法、类的构造函数

    3. @Qualifier:有多个相同类型的bean时,指定其中一个bean来消除歧义

    4. @Resource = @Autowired + @Qualifier,按名称来自动装配依赖的对象,是JDK级别的

    5. @RestController = @ResponseBody + @Controller,@RestController只返回body里的内容,不能返回页面(jsp/html)和跳转

    6. list类型自动注入:通过@Autowired,Spring会自动从容器中取出N个相同类型的bean装配到List类型中,从而简化了依赖注入的过程

    7. Map类型自动注入: 通过@Autowired,Spring会自动从容器中取出N个相同类型的bean以及bean的名称,注入到Map类型的converters中,此时该map得key对应为bean的名称,value则为对应bean对象

    8. @RequestBody, 根据request header Content-Type的值来决定是否使用;@ResponseBody,非html的数据,例如json/xml

    9. 执行顺序:@Constructor->@Autowired->@PostConstruct,并且@PostConstruct必须用于无参构造函数

    八、事务

    1. 声明式事务,使用注解@Transaction或者XML配置

    2. 编程式事务,通过代码实现事务

    九、用到的设计模式

    1. 工厂模式:BeanFactory

    2. 单例模式:Spring Bean默认实例化为单例对象

    3. 代理模式:AOP

    4. 模板方法:JDBC

  • 相关阅读:
    Android开发 ViewConfiguration View的配置信息类
    Android 开发 倒计时功能 转载
    Android 开发 关于7.0 FileUriExposedException异常 详解
    Android 开发 实现文本搜索功能
    Android 开发 Activity里获取View的宽度和高度 转载
    Android 开发 存储目录的详解
    Android 开发 Fresco框架点击小图显示全屏大图实现 ZoomableDraweeView
    Android 开发 将window变暗
    Android 开发 DisplayMetrics获取Android设备的屏幕高宽与其他信息
    Android 开发 DP、PX、SP转换详解
  • 原文地址:https://www.cnblogs.com/june0816/p/6803795.html
Copyright © 2011-2022 走看看