谈谈我对Spring的简单理解

我们所提到的Spring即是SpringFramework,概念在这里就不多做赘述。

先来说我理解的IOC(Inversion of Control),即控制反转:
  IOC是Spring的两大核心概念之一,它给我们提供了一个bean容器,这个容器会托管我们注册到容器中的bean,它帮助我们创建对象,而不需要我们手动创建。这个容器还有强大的功能叫DI(依赖注入),我们可以通过XML配置文件或java代码的方式将我们所需对象的其他依赖也注入进去,减少bean之间的耦合度,让bean之间的关系不再错综复杂。


我理解的AOP(Aspect Oriented Programming)
  AOP是一种面向切面编程的思想,回想一下,在我们日常的项目中会遇到很多重复性的代码,比如日志,事务操作等,这种代码我们会在多处写到,AOP可以把这些共有的代码抽出来,在需要的地方切入进去,这样既不会影响原有代码,也能够完成相应的业务,方便了代码的书写,提高代码重用性,减少冗余代码。
  AOP主要是通过动态代理的方式实现,AOP中有两种代理:

  • 如果目标类有接口,可以用JDK原生的JDK动态代理;
  • 如果目标类没有接口,可以用Cglib代理模式;

Spring的七大模块:

  1. Spring Core: Core封装包是框架的最基础部分,提供IOC和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。
  2. Spring Context: 构建于Core封装包基础上的 Context封装包,提供了一种框架式的对象访问方法,有些象JNDI注册器。Context封装包的特性得自于Beans封装包,并添加了对国际化(I18N)的支持(例如资源绑定),事件传播,资源装载的方式和Context的透明创建,比如说通过Servlet容器。 3.Spring DAO: DAO (Data Access Object)提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。 并且,JDBC封装包还提供了一种比编程性更好的声明性事务管理方法,不仅仅是实现了特定接口,而且对所有的POJOs(plain old Java objects)都适用。
  3. Spring ORM: ORM 封装包提供了常用的“对象/关系”映射APIs的集成层。 其中包括JPA、JDO、Hibernate 和 iBatis 。利用ORM封装包,可以混合使用所有Spring提供的特性进行“对象/关系”映射,如前边提到的简单声明性事务管理。
  4. Spring AOP: Spring的 AOP 封装包提供了符合AOP Alliance规范的面向方面的编程实现,让你可以定义,例如方法拦截器(method-interceptors)和切点(pointcuts),从逻辑上讲,从而减弱代码的功能耦合,清晰的被分离开。而且,利用source-level的元数据功能,还可以将各种行为信息合并到你的代码中。
  5. Spring Web: Spring中的 Web 包提供了基础的针对Web开发的集成特性,例如多方文件上传,利用Servlet listeners进行IOC容器初始化和针对Web的ApplicationContext。当与WebWork或Struts一起使用Spring时,这个包使Spring可与其他框架结合。
  6. Spring Web MVC: Spring中的MVC封装包提供了Web应用的Model-View-Controller(MVC)实现。Spring的MVC框架并不是仅仅提供一种传统的实现,它提供了一种清晰的分离模型,在领域模型代码和Web Form之间。并且,还可以借助Spring框架的其他特性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值