【Spring5.0】学习目录(一)

版权声明:转载或者引用本文内容请注明原作者名字及来源地址→ https://blog.csdn.net/weixin_43254907/article/details/88576303

Spring框架的两个核心功能:

- Spring容器作为超级大工厂,负责创建,管理所有的Java对象,这些对象被称为Bean。
- Spring容器管理容器中Bean之间的依赖关系,
  Spring使用一种被称为“依赖注入”的方式来管理Bean之间的依赖关系。
  • Spring容器常用接口

    • ApplicationContextBeanFactory 的子接口,该接口的实现类:

      • ClassPathXmlApplicationContext:用于搜索加载类路径下的配置文件
      • FileSystemXmlApplicationContext:用于搜索加载相对路径或绝对路径下的配置文件
  • Spring的核心机制:依赖注入

    • A对象调用B对象被Spring称为依赖,即A对象依赖B对象。假如A组件调用了B组件的方法,即可称A组件依赖B组件。

    • Ioc控制反转:调用者主动获取被依赖对象变为被动接受Spring容器为调用者的成员变量赋值(依赖注入)。

      • 设值注入:IoC容器使用成员变量的setter方法来注入被依赖对象。

        • Spring<bean />的子元素<property />
        • 用于执行JavaBean的setter方法
        • name:用于执行哪一个setter方法
        • valueref:用于传入setter方法的参数。value用于传入基本数据类型及其包装类,ref用于传入其他Bean
      • 构造注入:IoC容器使用构造器来注入被依赖对象。

        • Spring<bean />的子元素<constructor-arg />
        • index:用于指定作为第几个构造参数
        • type:用于指定构造参数的类型
        • valueref:用于传入构造器的参数。value用于传入基本数据类型及其包装类,ref用于传入其他Bean
    • ApplicationContext国际化支持

      • ApplicationContext接口继承了MessageSource接口,因此具有国际化功能。
      • String getMessage(String code, Object[] args, Locale loc)
      • String getMessage(String code, Object[] args, String default, Locale loc)
    • ApplicationContext的事件机制

      • ApplicationEvent:容器事件,必须由ApplicationContext发布

        • publishEvent():发布容器事件
      • ApplicationListener:监听器,可由容器中的任意监听器Bean担任。

  • Spring 容器中的Bean

    • Bean的基本定义和Bean别名

      • id:确定该Bean的唯一标示,如果Bean的标识必须包含一些特殊符号,此时可以采用name属性,用于指定Bean的别名。通过访问Bean别名也可以访问Bean实例。
      • class:指定该Bean的具体实现类,这里不能是接口
      • <alias name="" alias="" />指定别名
    • 容器中Bean的作用域(scope)

      • singleton:单例模式。singleton作用域内的Bean将只生成一个实例。
      • prototype:每次通过getBean()获取prototype作用域内的Bean时,都将生成一个新的Bean实例。
      • request:对于一次HTTP请求,只生成一个实例。
      • session:对于一次HTTP回话,只生成一个实例。
      • application:对于整个Web应用,只生成一个实例。
      • websocket:在整个WebSocket的通信过程中,只生成一个实例。
    • 使用自动装配注入合作者Bean

      • <beans .../>元素的default-autowire属性指定,所有的Bean起作用。

      • <bean .../>元素的autowire属性指定,只对该Bean起作用。

      • autowiredefault-autowire属性可以接收如下值:

        • no:不使用自动装配。必须通过ref元素定义。
        • byName:根据setter方法名与Bean的id进行匹配。
        • byType:根据setter方法的形参类型来自动装配。
    • Spring提供的Java配置管理(注解)

      • @Configuration:用于修饰一个Java类
      • @Bean:用于修饰一个方法,将该方法的返回值定义成一个Bean
      • @Value:用于修饰一个Field,用于为该Field配置一个值,相当于配置一个变量。
      • 使用AnnotationConfigApplicationContext(AppConfig.class)创建Spring容器。
      • <bean class="AppConfig" />加载配置类
      • @ImportResource("classpath:/beans.xml")加载配置文件
    • 创建Bean的3种方式

      • 调用构造器创建Bean
      • 调用静态工厂方法创建Bean
      • 调用实例工厂方法创建Bean
    • 获得Bean本身的id

      • 通过实现BeanNameAware接口的setBeanName()方法
  • 容器中Bean的生命周期

    • 注入依赖关系之后

      • 使用init-method属性
      • 实现InitialzingBean接口
    • 即将销毁Bean之前

      • 使用destory-method属性
      • 实现DisposableBean接口
    • 协调作用域不同步的Bean

      • <lookup-method name="" bean="" />
  • 高级依赖关系配置

    • 获取其他Bean的属性值

      • PropertyPathFactoryBean调用其他Bean的getter方法:

        • 调用哪个对象:setTargetObject(Object targetObject)

        • 调用哪个getter方法:setPropertyPath(String propertyPath)

        • <util:property-path.../>简化配置:

          • id:指定将getter方法的返回值定义成名为id的Bean实例。
          • path:指定哪个Bean实例,哪个属性暴漏出来。
    • FieldRetrievingFactoryBean获取Field值

    • MethodInvokingFactoryBean获取方法返回值

  • 基于XML Schema的简化配置方式

    • 使用p:命名空间来驱动执行setter方法 (设值注入)
    • 使用c:命名控件来驱动执行构造器方法 (构造注入)
    • util:命名空间简化constantproperty-pathlistsetmapproperties
    • aop:命名空间简化Spring AOP
    • jee:简化Spring的Java EE配置
    • jms:简化Spring关于JMS的配置
    • lang:简化Spring动态语言
    • tx:简化Spring事务配置
  • Spring提供的表达式语言(SpEL)

猜你喜欢

转载自blog.csdn.net/weixin_43254907/article/details/88576303