什么是Spring框架
Spring特点
方便解耦,简化开发
Aop变成支持
方便程序测试
方便和其他框架进行整合
方便进行事物操作
降低API开发难度
Spring IOC的注入
通过属性进行注入,通过构造函数进行注入
注入对象数组 注入List集合
注入Map集合 注入Properties类型
Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式 .
组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:
- 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
- Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
- Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能 , 集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理任何支持 AOP的对象。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖组件,就可以将声明性事务管理集成到应用程序中。
Spring IOC 自动绑定模式
可以设置autowire按以下方式进行绑定
按byType只要类型一致会自动寻找
按byName自动按属性名称进行自动查找匹配
Spring实现ioc控制反转描述
原来需要我们自己进行bean的创建以及注入,而现在交给
spring容器去完成bean的创建以及注入。
所谓的“控制反转”就是 对象控制权的转移,
从程序代码本身转移到了外部容器。
官方解释
控制反转即IoC (Inversion of Control),
它把传统上由程序代码直接操控的对象的调用权交给容器,
通过容器来实现对象组件的装配和管理。
所谓的“控制反转”概念就是对组件对象控制权的转移,
从程序代码本身转移到了外部容器。
就比如说假设买东西,以前我们需要自己去超市买东西,但是现在我们可以不用自己去超市,我们只要把购物袋放在家门口,IOC就会自己去把我们想要的东西买回来,然后放在袋子里面,我们打开袋子拿起来用就可以了
Spring中实现AOP技术
在Spring中可以通过代理模式来实现AOP
代理模式分为
静态代理:一个接口,分别有一个真实实现和一个代理实现。
动态代理:通过代理类的代理,接口和实现类之间可以不直接发生联系,而可以在运行期(Runtime)实现动态关联。
动态代理有两种实现方式,可以通过jdk的动态代理实现也可以通过cglib
来实现而AOP默认是通过jdk的动态代理来实现的。jdk的动态代理必须要有
接口的支持,而cglib不需要,它是基于类的。
IOC接口(BeanFactory)
IOC思想基于IOC容器完成,IOC容器底层就是对象工厂
Spring提供IOC容器实现的两种方式:(两个接口)
BeanFactory:
IOC容器中最基本实现方式,时Spring内部使用的接口,不提供开发人员进行使用
特点:加载配置文件的时候不会去创建对象,在获取对象(使用)才会去创建对象
ApplicationContext:
BeanFactory接口的子接口,提供更多更强大的功能,一般有开发人员进行使用
特点:加载配置文件时候就会把在配置文件的对象进行创建
ioc基础
1、先写一个UserDao接口
3、然后去写UserService的接口
4、最后写Service的实现类
5、测试类
接下来就进行增删改查的各种操作
什么是通知?有哪五种类型的通知?
通知是个在方法执行前或执行后要做的动作,实际上是程序执行时要通过SpringAOP框架触发的代码段。Spring切面可以应用五种类型的通知:
1、before:前置通知,在一个方法执行前被调用。
2、after: 在方法执行之后调用的通知,无论方法执行是否成功。
3、after-returning: 仅当方法成功完成后执行的通知。
4、after-throwing: 在方法抛出异常退出时执行的通知。
5、around: 在方法执行之前和之后调用的通知。