目录
1.Spring简介
1.1 什么是Spring:
1.2 Spring框架的优势
1.3 Spring能帮我们做什么
1.4 Spring核心框架结构图
2. Spring IOC和DI
2.1 IOC: Inverse of Control(控制反转)
2.2 DI: Dependency Injection(依赖注入)
3.Spring AOP
3.1 AOP的目的
3.2 AOP当中的概念
Spring中的注解
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 框架的基本功能。
Spring AOP: 即面向切面编程思想,把 Spring 框架直接与某个功能对接[8]。
Spring DAO: 模式思想将业务逻辑代码与数据库交互代码分离,降低两者耦合
Spring Web: 可以简化 MVC 框架的请求,使开发界面实现数据传输更加流畅。
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.类型注入(默认): 若注入的属性是接口,则自动注入实现类
2.名称注入(key): 一般不用
重要前提: 若需要依赖注入,则对象必须交给Spring容器管理
3.Spring AOPAOP(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框架的理解,希望可以帮助到大家,详细的代码及深入学习后期会发
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)