Spring框架学习总结**
前言
Spring知识点归纳,总结复盘便于记忆
一、(1).Spring是什么?
- Spring是2003年兴起的一个轻量级的java开发框架,一个分层的JavaEE的轻量级开源框架,Spring的核心是控制反转(IOC)和面向切面(AOP)。
一、 (2).Spring的好处:
1.降低组件之间的耦合度,实现软件各层之间的解耦2.可以使容器提供众多服务,如事务管理消息服务处理等,当我们呢使用容器管理事务时,开发人员就不需要手工控制事务,也不需要处理复杂的事务传播
3.容器提供单例模式支持,开发人员需要编写实现代码
4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能
5.容器提供众多的辅佐类。使这些类可以加快应用的开发
二、Spring的两大特性
二、AOP:面向切面编程
- JoinPoint(连接点):目标对象中,所有可以增强的方法,就是spring允许你是通知(Advice)的地方,那可就真多了,基本每个方法的前、后(两者都有也行),或抛出异常是时都可以是连接点,spring只支持方法连接点。
- Pointcut(切入点):目标对象中,已经被增强的方法。调用这几个方法之前、之后或者抛出异常时干点什么,那么就用切入点来定义这几个方法。
- Advice(通知/增强) :增强方法的代码、想要的功能。 Target(目标对象):被代理对象,被通知的对象,被增强的类对象。
4.Weaving(织入):将通知应用到连接点形成切入点的过程 Proxy(代理):将通知织入到目标对象之后形成的代理对象
5.aspect(切面):切入点+通知————通知(Advice)说明了干什么的内容(即方法体代码)和什么时候干(什么时候通过方法名中的before,after,around等就能知道),二切入点说明了在哪干(指定到底是哪个方法),切点表达式等定义。
简单理解为:
1.启动AOP配置
2.找到切入点进行切入
3.找到切入
4.在Springxml文件中去配置增强
二、(1).Spring的增强分为五种
1、前置增强—目标方法运行之前调用
2、后置增强—目标方法之后调用(如何出现异常都会调用)
3、最终增强—目标方法运行之后调用(无论是否出现异常都会调用)
4、环绕增强—前三者的共同结合,目标之前和之后都可以调用
5、异常增强—如果出现异常,就会进行调用
二、(2). applicationContext & BeanFactory区别
BeanFactory接口
(1) spring的原始接口,针对原始接口的实现类功能较为单一
(2)BeanFactory接口实现类的容器,特点是每次在获得对象时才会创建对象
ApplicationContext接口
(1)每次容器启动时就会创建容器中配置的所有对象
(2)提供了更多功能
(3)从类路径下加载配置文件: ClassPathXmlApplicationContext
从硬盘的绝对路径下加载配置文件:FileSystemXmlApplication
二、(3).如何配置applicationContext.xml文件
(1)导入AOP(约束)命名空间
(2)配置目标对象
(3)配置通知对象
(4)配置将通知织入目标对象
三、IOC:控制反转
IOC的含义:
将对象的创建权交给Spring,其作用是实现了程序的解耦合。简单地来说:将所有创建好的对象放在Bean容器中,在使用的时候直接调用即可,Spring创建对象的过程,不是在代码里面实现的,而是交给Spring来进行配置实现的
IOC和DI
IOC的基本思想就是反转资源获取的方向,传统的资源查询要求组件向容器发送请求,然后获取到所要请求的资源作为回应,应用IOC之后,则是容器主动的将资源推送给它所管理的组件,组件只需要做的是选择一种合适的方式接收资源,这种行为就是被看做是组件被动查找资源,DI(依赖注入),这是IOC的另一种表达方式,也就是组件以一些与预先定义好的方式(setter方法)接收来自容器的资源注入,相对于IOC而言,表达更为直接
四、 Spring的重要组成部分
1、Context–Spring的平台
2、Core------Spring的工具类
3、Bean------创建的对象
五、 Spring的注入方式
1.set注入方式(重要)
2.构造函数注入
3.字段注入 p标签注入
六、Spring对象的三种创建方式
1.空参数构造(重要)
2.静态工厂创建(调用静态方法创建)调用UserFactory类的静态createUser方法创建为User的对象,放入容器
3.实例工厂创建(调用非静态方法创建)–需要配置两个Bean,因为无法通过类名调用非静态方法
关于Spring的面试题
@AutoWired和@Resource的区别?
@AutoWired默认以类型进行查找 @Resource默认以名称进行查找
@AutoWired(required=false)+Qualifier(“user”)==@Resource(name=“user”)
其中@Resource注解是jdk1.6才有的
总结
这是一篇关于纯理论的Spring的学习总结啦,有利于后期记忆和查阅啦!!!