| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Spring框架(浅谈) -> 正文阅读 |
|
[Java知识库]Spring框架(浅谈) |
目录 2.1 IOC: Inverse of Control(控制反转) 2.2? DI: Dependency Injection(依赖注入) 1.Spring简介??????? Spring框架是Java应用最广泛的框架,它成功的理念就在于IOC(Inversion of Control? 控制反转)和AOP(Aspect Oriented Programming? 面向切面编程) 1.1 什么是Spring:1.Spring是一个轻量级的DI/IOC和AOP容器的开源框架 2.Spring提倡"最少侵入"的方式管理应用中的代码 这代表可以随时下载或安装Spring框架 1.2 Spring框架的优势用两个字来说就是解耦,也可以说是提高代码复用性和方便修改增删功能,降低开发难度 下面来详细说一下Spring框架的优点: 1.低侵入/低耦合:降低组件之间的耦合性,实现各层之间的解耦 2.声明式事务管理:基于切面编程和惯例 3.方便集成其他框架:如Mybatis,Hibernate等 1.3 Spring能帮我们做什么1.根据配置文件创建及组件对象之间的依赖关系 2.面向切面编程可帮我们无耦合的实现日志记录,统计和安全控制 3.能简化帮我们管理数据库事务 4.提供了第三方数据访问框架的无缝集成,自身提供JDBC模板方便访问数据库 5.提供了第三方Web框架的无缝集成,自身提供SpringMVC框架,方便Web层搭建 6.方便与Java EE整合,与更多技术整合(如:缓存框架) 1.4 Spring核心框架结构图Spring?Core: Spring?的核心容器,它实现了?IOC?模式,提供了?Spring?框架的基本功能。 2. Spring IOC和DI ???????2.1 IOC: Inverse of Control(控制反转)1.读作控制反转比较好理解,这不是什么技术,而是一种思想,就是将在程序中手动创建对象的控制权交给Spring框架进行管理 2.正控:如果要使用某个对象,需要自己去创建对象 3.反控:如果要使用某个对象,只需要从Spring容器中获取需要使用的对象,不关心对象的创建过程,也就是把创建对象的控制权反转给了Spring框架 ?? 举个栗子:? 控制反转是个抽象的概念,下面我们举个栗子来说明一下 ????????在生活中,想要得到一样东西的时候,第一反应就是去找这件东西,比如想喝奶茶,在没有奶茶店的时候,最直接的做法是:养一头奶牛,种茶叶,然后等收获到茶叶和牛奶再去自己煮奶茶(比较夸张,但便于理解).值得注意的是这些都是你自己主动创造的过程,也就是一杯奶茶需要你自己创造 ??????? 然而现在,由于外卖的盛行,当想要喝奶茶,只要外卖下单,通过电话和地址直接由外卖员送到 ????????这里注意:我们并没有自己主动创造奶茶,奶茶是奶茶店创造的,而不是我们,而且完全能达到我们的要求,甚至比我们创造的还要好很多!所以IOC简单来说就是帮我们管理了创建对象的一系列事情(对象的生命周期)说到这里大家应该理解IOC了叭 总结: 传统方式: 通过new关键字主动创建一个对象 IOC方式: 对象的生命周期由Spring来管理,直接从Spring里获取一个对象,IOC是反转控制,就像控??? ?????? ? ? ?? 制权从本来在自己手里,交个了Spring. 2.2? DI: Dependency Injection(依赖注入)??????? 其实DI和IOC是同一个概念不同角度而已DI相对IOC而言,明确描述了"被注入对象依赖IOC容器配置依赖对象".接下来我们分析一下: ??????? 理解DI 的关键是:谁依赖谁?为什么要依赖?谁注入谁?注入了什么? ??????? 1.谁依赖谁:应该是应用程序依赖于IOC容器 ??????? 2.为什么要依赖:应用程序需要IOC容器来提供对象需要的外部资源 ??????? 3.谁注入谁:IOC容器注入应用程序的某个对象应用程序依赖的对象 ??????? 4.注入了什么:注入某个对象所需要的外部资源(对象,资源,常量数据) @Autowired注解 ? 说明: 在对象中若需要使用属性注入,一般使用@Autowired注解 ? 功能: 可将Spring容器中的对象自动注入到属性中 ? 注入方式: 1.类型注入(默认): 若注入的属性是接口,则自动注入实现类 ? 重要前提: 若需要依赖注入,则对象必须交给Spring容器管理 3.Spring AOP??????? AOP(Aspect Oriented Program)面向切面编程,如果说IOC是Spring的核心,那么SpingAOP就是Spring最重要的功能之一了,在数据库事务中SpringAOP被广泛使用. ??????? 面向切面编程实际上是一种思想,把功能分为核心业务功能和周边功能 ??????? 业务核心功能: 如登录,增加数据,删除数据都为业务核心 ??????? 周边功能: 如性能统计,日志,事务管理等等 3.1 AOP的目的??????? AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(如事务处理,日志管理,权限控制等)封装起来,便于减少系统代码的冗余,降低模块间的耦合度,并有利于未来的拓展性和可维护性. 3.2 AOP当中的概念1.切入点(Pointcat):在哪些类哪些方法上切入(什么地方) 2.通知(Advice):在方法执行的时机(方法前/后/前后)做什么(强化的功能) 3.切面(Aspect):切面=切入点+通知 就是:在什么时机,什么地方,做什么增强 4.织入(Weaving):把切面加入到对象,并创建代理对象的过程(有Spring完成) 5.连接点(Joint point):表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point 6.目标对象(Target):织入Aspect的目标对象. ??????? 我们可以这么理解AOP,首先它不影响主要业务的流程,这里把主要业务看成纵向的,AOP它需要横向注入到代码中,用来解决代码冗余,同时提高了代码的可用性,降低耦合,方便业务的修改 继续举个栗子 ??????? 比如会员的机制,登录账号时会检测账号和密码和会员的等级,然后进行不同的操作,以下基本逻辑的基本写法 ? ? ????????同样有个问题,我虽然不用每次都copy代码了,但是,每个接口总得要调用这个方法,于是就有了切面的概念,我将方法注入到接口调用的某个地方(切点) ?这就相当于面向切面的编程,把冗余的代码定义在接口里,然后横向注入到业务中 Spring中的注解
以上就是我对Spring框架的理解,希望可以帮助到大家,详细的代码及深入学习后期会发 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 4:36:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |