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系统中对象耦合关系十分复杂,系统的各模块之间依赖,微服务模块之间的相互调用请求,都是这个道理. ...
随机推荐
- MinHook 分析01 (x86的jmp+offset类型hook)
MinHook的原理就在于重写目标函数.在这次分析的X86模式中,32位相对JMP覆盖了整个地址空间.因为在相对地址计算中溢出的位被忽略,所以在X86模式中,函数的地址是容易掌控的. 直接来进入正题. ...
- List集合联系
创建一个List,在List 中增加三个工人,基本信息如下: 姓名 年龄 工资 zhang3 18 3000 li4 25 3500 wang5 22 3200 a) 在li4 之前插入一个工人,信息 ...
- springboot快速开发(简单web)
这是一个springboot基础配置文件介绍的demo.只涉及到 控制层与前端的简单交互,用于验证代码的畅通. spring-boot pom.xml解释 <?xml version=&quo ...
- Oracle组成介绍
Oracle Database 11g是一些特殊文件的集合,这些文件是用数据库配置助手创建的,然后用OEM Grid Control完成相关工作.这些数据库文件是通过一组共享内存进程来进行访问的,这组 ...
- codeforces 1140D(区间dp/思维题)
D. Minimum Triangulation time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- 利用div+css实现九宫格,然后用js实现点击每个格子可以随机更改格子(div)的背景颜色
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- CentOS 6 RPM安装包下载地址
32位系统的RPM安装包的下载地址 http://mirrors.163.com/centos/6/os/i386/Packages/ 64位系统的RPM安装包的下载地址 http://mirrors ...
- TkbmMWClientQuery的计算字段在CalcFields事件触发次数太多
kbmmw有两处BUG和作者提下,一个是TkbmMWClientQuery的计算字段在CalcFields事件触发次数太多,另一个是在TkbmMemTable的加载数据时字段会执行OnValidate ...
- 《贝贝GO》隐私政策
隐私政策 贝贝GO尊重并保护所有使用服务用户的个人隐私权.为了给您提供更准确.更有个性化的服务,贝贝GO会按照本隐私权政策的规定使用和披露您的个人信息.但贝贝GO将以高度的勤勉.审慎义务对待这些信息. ...
- [C++]几种排序
本文为大大维原创,最早于博客园发表,转载请注明出处!!! 1.冒泡: #include<cmath> #include<cstdlib> #include<ctime&g ...