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
②编程式事务 要改变原有的代码。(不用)

浙公网安备 33010602011771号