Spring框架基础解析
Spring是一个轻量级的、非侵入式的容器框架;对Bean对象的生命周期进行管理。
Spring框架的核心:IOC(控制反转)、DI(依赖注入)、AOP(面向切面编程)。
(1) IOC:控制反转。
传统的Java开发过程中,当需要一个对象的时候,我们需要自己new或者getInstance等直接或间接调用构造方法创建一个对象;而在Spring容器中,Spring容器利用 工厂模式(BeanFactory)为我们创建了所需要的对象,使用时无须自己创建,直接调用Spring为我们创建的对象即可,这就是控制反转的思想。
优点:简化了我们对对象的管理,交给了Spring管理;程序员不用再自己创建对象,需要时直接从Spring中取。由主动创建对象变成了被动接收对象,控制权反转,减轻了程序员的代码量,提高了开发效率。打个比方:IOC就像现在得订餐APP,以前我们吃饭需要自己去做,去New一顿饭出来;现在我们有了订餐APP(Spring),我们只需要登录这个APP,在APP订餐页面applicationtext.xml(Spring配置文件)填写你想吃的饭(也就是Bean对象),然后就可以预定你要吃的饭,想要猪头肉就会给你送猪头肉,想要红烧肉就会送红烧肉;各种菜就像是Property,这样我们坐在家中就可以吃到饭了,不用自己再动手去做了。
(2)DI:依赖注入。
Spring框架为我们提供了三种注入方式,分别是set注入,构造方法注入,接口注入。
Spring使用JavaBean对象的Set方法或者带参数的构造方法为我们创建所需要的对象时将其属性自动设置为所需要的值的过程就是依赖注入的思想。
优点:有了Spring容器,当我们想要创建一个Service时,就可以直接从Spring容器中拿;或者想在Service中调用Dao也不需要在Service里创建,因为Spring会从容器中取出Dao,并注入到Service里,也就是依赖注入。
(3)AOP:面向切面编程。
在面向对象编程(OOP)中,我们将事物纵向抽象成一个个的对象。而在面向切面编程中,我们将一个个对象某些类似的方面横向抽象成一个切面,对这个切面进行一些如:权限验证,事务管理,记录日志等公用操作处理的过程就是面向切面编程的思想。
总结:使用Spring的目的:就是让对象与对象或者模块与模块之间的关系没有通过代码关联,都是通过配置类说明管理的(Spring根据这些配置内部通过反射去动态的组装对象)。
注:控制反转和依赖注入的简单理解:
控制反转IOC:当某个角色需要调用另一个角色的协助时,在传统的程序设计中,通常由调用者创建被调用者的实例,如果创建被调用者实例的工作 不再由调用者来完成,而是由外部容器来完成。
依赖注入DI:创建被调用者实例的工作通常由外部容器来完成,然后注入调用者,因此也称为依赖注入。
Spring框架基础解析的更多相关文章
- Spring框架基础2
Spring框架基础2 测试Spring的AOP思想和注解的使用 导包(在前面的基础上添加) SpringAOP名词解释 AOP编程思想:横向重复代码,纵向抽取:就是说多个地方重复的代码可以抽取出来公 ...
- Spring学习指南-第二章-Spring框架基础(完)
第二章 Spring框架基础 面向接口编程的设计方法 在上一章中,我们看到了一个依赖于其他类的POJO类包含了对其依赖项的具体类的引用.例如,FixedDepositController 类包含 ...
- 4-1 Spring框架基础知识
Spring框架基础知识 1.Spring 框架作用 主要解决了创建对象和管理对象的问题. 自动装配机制 2.Spring 框架 (Spring容器,JavaBean容器,Bean容器,Spring容 ...
- Spring框架基础
1 Spring框架 1.1 Spring的基本概念 是一个轻量级的框架,提供基础的开发包,包括消息.web通讯.数据库.大数据.授权.手机应用.session管理 ...
- Spring框架基础知识
本人博客文章网址:https://www.peretang.com/basic-knowledge-of-spring-framework/ Spring框架简介 Spring , 一个开源的框架 , ...
- Spring 框架基础(04):AOP切面编程概念,几种实现方式演示
本文源码:GitHub·点这里 || GitEE·点这里 一.AOP基础简介 1.切面编程简介 AOP全称:Aspect Oriented Programming,面向切面编程.通过预编译方式和运行期 ...
- Spring 框架基础(06):Mvc架构模式简介,执行流程详解
本文源码:GitHub·点这里 || GitEE·点这里 一.SpringMvc框架简介 1.Mvc设计理念 MVC是一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集 ...
- Spring 框架基础(01):核心组件总结,基础环境搭建
本文源码:GitHub·点这里 || GitEE·点这里 一.Spring框架 1.框架简介 Spring是一个开源框架,框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 ...
- Spring 框架基础(03):核心思想 IOC 说明,案例演示
本文源码:GitHub·点这里 || GitEE·点这里 一.IOC控制反转 1.IOC容器思想 Java系统中对象耦合关系十分复杂,系统的各模块之间依赖,微服务模块之间的相互调用请求,都是这个道理. ...
随机推荐
- Python之列表方法
def __init__(self, seq=()): """ list() -> new empty list list(iterable) -> new ...
- Linux下数据库备份
1.登录数据库服务器并切换到数据库用户下 [root@*** ~]# su - oracle 2.测试用户名密码是否能正确连接数据库 [oracle@*** ~]$ sqlplus username/ ...
- HTML网页音频控制
// 音频播放function playSound(url) { var borswer = window.navigator.userAgent.toLowerCase(); var audio; ...
- Devexpress GridControl 多选
以前dev的多选要自己处理,一般的处理方式就是在单元格中添加checkbox控件.后来的版本中dev增加了多选的支持,只需要设置一下属性就可以了,属性如下图: 然后效果设计页面就是这个样子: 运行以后 ...
- 2017-10-6模拟赛T3 丝(filament)
题目 题解 20分实在想不到是什么做法…… 40分做法,从小到大枚举最小循环节长度,O(n) check即可,总复杂度O(n^2). 100分做法: 看到数据范围,T*n<=10^6,可知这题需 ...
- Docker多主机互联最佳实践
在公司使用docker多主机互联时碰到了各种坑.搞清楚后才发现如此简单,以下是根据实际经验的总结. 版本信息 Client: Version: 18.09.0 API version: 1.39 Go ...
- 洛谷P1091 合唱队形
输入输出样例 输入样例#1: 8 186 186 150 200 160 130 197 220 输出样例#1: 4 此题意在先升后降子序列,单调递增子序列,单调递减子序列当中找到最长的一组序列. 因 ...
- esp8266网络自动对时 串口字符连接 并显示 12864i2c u8g2库
给别人定做的 做的 集成了 烟雾传感器dht11u8g2网络 自动对时 #include <dht11.h>//程序中调用了dht11的库#include <Arduino.h> ...
- bind啊你返回的函数到底是个虾米
一般apply().call()和bind()会一起比较. 他们三个都是改变this对象指向的方法. apply()和cal()方法是会立即执行,apply把参数作为数组,call方法接收一个一个的参 ...
- svg 动画 透明度 放大缩小 x轴Y轴
参考链接:https://www.cnblogs.com/Chrimisia/p/6670303.html vue 中封装svg:http://www.cnblogs.com/Jiangchuanwe ...