[Spring]Spring学习笔记(一)

Spring 概念

  1. spring是开源轻量级框架
  2. AOP:面向切面编程,扩展功能不是修改源代码实现
    IOC :控制反转,有一个类,在类里面有方法(不是静态方法)
    把对象的创建通过spring配置创建类对象
  3. 一站式框架
    三层:

    1. web层 springMVC
    2. Service层 ioc
    3. Dao层  jdbcTemplate
  4. spring版本
    当前最新版本:https://projects.spring.io/spring-framework/#quick-start
    官网建议用Maven/Gradle安装

Spring的ioc操作

  1. 把对象的创建交给spring进行管理
  2. ioc操作两部分:
    1. Ioc的配置文件方式
    2. Ioc的注解方式

IOC底层原理

  1. ioc底层原理使用技术
    1. xml配置文件
    2. Dom4j解决xml
    3. 工厂设计模式
    4. 反射

IOC原理简介图

IOC使用方法(简单样例):

  1. 导入jar包(用Maven/Gradle直接导入)
  2. 编写要操作的类(简单的User类)
  3. 创建Spring配置文件,通过配置创建类:
    1. 在src下创建xml文件,官方建议为applicationContext.xml
    2. 引入schema约束,来源:https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/xsd-configuration.html
                                                               要加入的代码
    3. 配置对象创建
    4. 编写测试代码

      注:Maven自带的Junit版本为3.8.2,无法使用注解方式,故应手动修改为4.0以上版本才可使用注解。

      测试结果如上图

在spring里面通过配置文件创建对象

Beans 实例化有三种方式:

  1. 第一种 使用类的无参数构造创建(重点)
    类里面没有无参数的构造,会出现异常
  2. 第二种 使用静态工厂创建
    创建静态方法返回类对象
    根据类调用静态方法
    <bean id=”bean2” class=”****” factory-method=”getBean2”></bean>
  3. 第三种 使用实例工厂创建
    创建不是静态的方法,返回类对象
    先创建工厂对象
    <bean id=”bean3factory” class=”bean3类”></bean>
    再创建目标类,通过工厂对象里的方法构造
    <bean id=”bean3” factory-bean=”bean3factory” factory-method-”getBean3”></bean>

Bean标签常用属性

  1. id属性  起名称,任意命名
    Id属性值不能包含特殊符号,根据id值得到配置对象
  2. class属性:创建对象所在类的全路径
  3. name属性:与id本身功能一样,但name可以加特殊符号(遗留问题)
  4. scolp属性:
    singleton 单例   默认值  只有一个对象
    Prototype 多例     多实例对象
    不常用:
    Request  创建对象并把对象放到request域内
    Session创建对象并把对象放到session域内
    Globalsession 创建对象并把对象放到globalsession域内

属性注入

  1. 创建对象的时候,向类里面的属性设置值
  2. 属性注入的三种方式:

 

  1. 有参构造:(constructor-arg,构造函数为User(string username)  )
  2. Set方法构造:(property,构造函数没有参数,但类中有set方法)

    注入对象类型属性(属性可能是自定义对象)
    1 创建service类和dao类,同时在service得到dao对象
    2 具体实现过程
    (1)在service里面把dao作为类型属性
    (2)生成dao类型属性的set方法
    (3)配置文件中设置注入关系

P名称空间注入:

注入复杂类型属性

  1. 数组
  2. list集合
  3. map集合
  4. properties类型

数组与list集合

IOC和DI区别

  • IOC:控制反转,把对象创建交给spring进行配置
  • DI:依赖注入,向类里面的属性中设置值
  • 关系:依赖注入不能单独存在,需要在ioc基础之上完成操作

Spring整合Web项目原理

  1. 加载spring核心配置文件
    通过new来创建对象,虽然功能可以实现,但是效率很低
  2. 实现思想:把加载配置文件和创建对象过程,在服务器启动时候完成。
  3. 实现原理:
    1. servletContext对象
    2. 监听器
    3. 具体使用(原理、已封装)
      在服务器启动时,为每个项目创建ServletContext对象
      在servletContext对象创建手,使用监听器可以具体到ServletContext对象在什么时候创建
      使用监听器监听到ServletContext对象创建时候,
      加载spring配置文件,把配置文件配置对象创建
      把创建出来的对象放到SERVLETcONTEXT域对象里面(setAttribute方法)
      获取对象时候,到ServletContext域得到(getAttribute方法)