01 Spring概述
来源:互联网 发布:房琪 巴基斯坦 知乎 编辑:程序博客网 时间:2024/05/16 06:48
是什么
Spring是一个开源框架,其核心是IOC容器和AOP面向切面编程思想。
优点
非侵入式
基于Spring开发的应用中的对象可以不依赖于Spring的API 。
依赖注入
DI,Dependency Injection,反转控制(IOC)最经典的实现。
面向切面编程
AOP,Aspect Oriented Programming。
容器
Spring是一个容器,因为它包含并且管理应用对象的生命周期 。
组件化
Spring实现了使用简单的组件配置组合成一个复杂的应用。在Spring中可以使用XML和Java注解组合这些对象。
一站式
在IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库,实际上Spring自身也提供了表述层的SpringMVC和持久层的SpringJDBC。
开发过程中的层次结构
Dao层
Dao层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,Dao层的设计首先是设计Dao的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,Dao层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。
Service层
Service层主要负责业务模块的逻辑应用设计。同样是首先设计接口,再设计其实现的类,接着在Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。Service层的业务实现,具体要调用到已定义的Dao层的接口,封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。
Controller层
Controller层负责具体的业务模块流程的控制,在此层里面要调用Service层的接口来控制业务流程,控制的配置也同样是在Spring的配置文件里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,这样不仅使程序结构变得清晰,也大大减少了代码量。
View层
View层与控制层结合比较紧密,需要二者结合起来协同工作。View层主要负责网页前台的Jsp页面的表示。
主要内容
图示
从下向上看spring的主要内容
Test:Spring支持Junit单元测试 。
核心容器(IOC):Bean(Bean工厂,创建对象)、Core(一切的基础)、Context(上下文)、SpEL(Spring的表达式语言)。
面向切面(AOP):AOP、Aspects。
对数据访问的支持:JDBC、ORM、Transaction、JMS(java邮件服务)。
对web的支持:SpringMVC。
IOC和DI
IOC(Inversion Of Control)
反转控制,传统方式是组件主动从容器获取资源,反转控制改由容器主动将资源推送给组建,实际上推送的是代理对象。
DI(Depending Injection)
依赖注入,组件之间的关系是在运行期确定的,IOC和DI是同一概念的不同角度,IOC是通过DI实现的。
AOP
AOP(Aspect Oriented Programming)
面向切面编程时传统OOP的补充。
AOP操作的主要对象是切面。
常用术语
横切关注点:加在主线业务前后的内容,根据OOP原则封装为方法。
通知(advice):被方法化的横切关注点。以怎样的方式处理。How。
连接点(joinpoint):主线业务方法,一个业务方法就是一个连接点。
切入点(pointcut):要对哪些方法进行拦截,对要拦截的连接点的定义说明。Where。
切面(aspect):将切入点和通知方法封装起来。
参考资料
谈谈对Spring IOC的理解
Spring的IOC原理[通俗解释一下]
- 01 Spring概述
- Spring 01 概述
- spring概述
- Spring概述
- Spring 概述
- Spring 概述
- Spring 概述
- spring概述
- spring 概述
- spring概述
- spring概述
- Spring概述
- spring概述
- Spring 概述
- Spring 概述
- Spring 概述
- Spring概述
- Spring概述
- 【LeetCode】max-points-on-a-line一条线上最多点
- matlab中变量的基本概念
- 欢迎使用CSDN-markdown编辑器
- Mybatis中几个重要类
- 我的第一篇技术博客
- 01 Spring概述
- SQL中inner join、outer join和cross join的区别
- java中的“静态”
- Java第一个系统
- swusoj(将军鬼上身啦!(0324))
- java中的接口
- Win32函数实现鼠标拖动窗口
- Java图书查询系统实例
- Java图书查询系统实例(简化精炼版及部分更正)