Spring框架学习笔记

Spring框架学习笔记

一:什么是Spring

  Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。

  Spring理念:使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架。

二:Spring组成

  Spring容器框架是由7大模块组成而成的(见下图)。

  

三.Spring的优点

  Spring是一个免费的开源框架(容器)。

  Spring是一个轻量级的,非入侵式的框架。

  控制反转(IOC),面向切面编程(AOP)。

  支持事务的处理,对框架整合的支持!

  总结如下:Spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架。

四.IOC和DI的区别

  IOC: IOC是一种设计思想。

  DI : DI是实现IOC的一种方式。

  所谓的控制反转:本质上就是获取依赖对象的方法反转了。

  所谓的控制反转就是对象由spring创建、管理、装配。

五.IOC的创建对象的几种方式

  1.使用无参构造创建对象  --->默认

  2.使用有参构造创建对象

    2.1 使用下标实现IOC

    2.2 使用类型实现IOC

    2.3 使用参数名实现IOC

  总结:在配置文件加载的时候,容器中管理的对象就已经初始化了!

 六:Spring配置

  1.别名 :

  

 

 

   2.bean:

  

 

 

   3.import

  一般用于团队可发使用,可以将多个配置文件,导入合并为一个。

7.依赖注入

  依赖:bean对象的创建依赖于容器。

  注入:bean对象中的所有属性由容器注入。

  依赖注入的几种方式:

  1.构造器注入

  2.set方式注入 --di依赖注入的本质。

  3.c:namespace方式注入 和 p:namespace方式注入

8.Bean的作用域

  singleton :单例 -->全局唯一  默认是单例模式

  prototype : 每次从容器中get的时候,都会产生一个新对象! 原型模式

9.Bean的自动装配

  自动装配是spring满足bean依赖的一种方式

  spring会在上下文中自动寻找,并自动给bean装配属性!

  在spring中有三种装配的方式

    1.在xml中显示配置

    

 

 

 

    2.在java中显示配置

    3.隐式的自动装配bean(重要)

      3.1 ByName自动装配

      

 

 

       3.2 ByType方式注入

 

 

     总结:

      byName的时候,需要保证所有bean的id唯一,并且这个Bean需要和自动注入的属性的set方法的值一致!

      byType的时候,需要保证所有的class唯一,并且这个bean需要和自动注入的属性的类型一致!

10.使用注解实现自动装配

  步骤:

    1.导入约束支持 -->xml中头文件中添加约束。

    2.配置注解的支持

    

 

    @AutoWired :直接在实体类的属性上使用,也可以在set方法上使用!

     ps : @AutoWired(required = false) -->说明被这个注解注释的对象可以为null,否则不许为空

    @Nullable --> 如果字段标记了这个注解,说明这个字段可以为null;

    @Qualifier(value=""),如果@AutoWired自动装配的环境比较复杂,无法通过一个@AutoWired完成时,可以通过配合@Qualifier去使用,指定一个唯一的     bean的对象注入! 

    @Resource和@Autowired的区别:

      1.相同点:都是用来自动装配的,都可以放在属性字段上

      2.不同点:

        @Autowired 其实@Autowired注入首先根据byType注入,当类型大于1时在根据byName注入。如果byName有多个名字的前提下,可以通过@Qualifier(value="")注入指定IDbean。

        @Resource 默认是通过byName的方式实现,如果找不到名字,则通过byType的方式来实现,如果两个都找不到的情况下,就报错。

    区别: https://www.cnblogs.com/jichi/p/10073404.html

11.使用注解开发

    

 

 

 

    1.@Component 注解 -->一放在类上,说明这个类被IOC容器管理了!

    

 

 

     2.属性的注解方式 -->通过使用@Value 既可以作用在字段上又可以作用在set方法上!o

    

 

 

     3.通过@Component 衍生出来的注解,其作用都和@Component

      @Service  -->作用在Service层上。

      @Controller  -->作用在Controller层上。

      @Repository  -->作用在Respository层上。

      这四个注解的作用其实都是一样的,都是代表将某个类注册到spring中,装配Bean!

    4.Bean的作用域

      @Scope(value="singleton")  //设置Bean的作用域为单例

12.AOP

    代理模式分为静态代理和动态代理

      静态代理:

      动态代理:底层都是反射! 分为两大类:基于接口的动态代理和基于类的动态代理  记住两个类:proxy ,invocationHandler

        基于接口 -->JDK动态类

        基于类 -->cglib

    1.什么是AOP -->面向切面编程思想

      spring实现aop的几种方式

        ①使用Spring的API接口

          主要是两个接口: AfterReturningAdvice(后置通知接口)  和 MethodBeforeAdvice(前置通知接口)。 然后在SpringApplicationContext.xml中去配置<aop:config>切入点,环切通知</aop:config>

         ②自定义来实现

         ③使用注解实现

13.Spring声明式事务

    Spring支持两种事务

      ①声明式事务  AOP

      https://blog.csdn.net/jiadajing267/article/details/81056057

      ②编程式事务  要改变原有的代码。(不用)

posted @ 2020-04-02 23:05  ThrowNoMoneyEx_7  阅读(174)  评论(0)    收藏  举报