Spring之简介和引入

准备写一点文章来系统地学习一下spring框架

Spring介绍

使用Spring的目的是用来替代更加重量级的企业级Java技术,简化开发
通过切面和模板减少样板式代码

一些名词:

  • 侵入式:实现特定的接口,继承特定的类才能增强功能,如Struts2
  • 非侵入式:对现有的类结构没有影响,就能够增强JavaBean的功能
  • 松耦合:IOC控制反转实现了松耦合,即将bean对象交给spring管理
  • 面向切面编程:AOP,即在执行某些代码前后,先执行另外的代码,利用动态代理和反射机制来实现

引入Spring

在使用spring之前,我们原来的web项目的结构大致有:

  • servlet
  • service
  • dao

这是经典的MVC模式,令我们比较厌烦的是几乎所有的servlet、service里面都会有以下样式的代码(以作者本人写的博客为例):

ArticleService service = new ArticleServiceImpl();
...
JloggArticleProfileDao dao = new JloggArticleProfileDaoImpl();
...

这怎么说呢,太繁琐了。我每次调用方法的时候就创建一个这样的对象,每次都在重复这样的操作,每个servlet里面都会有这样的语句。

鉴于此,Spring给了我们解决方案:IOC控制反转

IOC控制翻转

IOC和AOP是Spring的两大核心思想

Inversion of Control,即控制反转IOC,这个名词说起来非常简单,但是想要说到底什么是IOC,这里提出我自己的总结:

对象的创建交给外部容器完成,就是控制反转IOC

  • 对象不在程序中写成Impl写死,而是交给spring来管理(放到容器中),在需要的时候,只需要找spring要这个对象就可以了

因为对象和对象之间可能具有依赖关系,比如汽车会有4个轮子,那轮子对象和汽车对象就有依赖关系,spring使用依赖注入(Dependency Injection)来解决这个问题。

  • Spring使用依赖注入来实现对象之间的依赖关系
  • 创建完对象之后,对象的关系处理就是依赖注入

上面已经提到了Spring会帮助我们管理对象,对象是放在容器中的,因此我们把这个容器称为IOC容器

综上,无论是创建对象、处理对象之间的依赖关系、还是控制对象的创建时间和创建数量,我们所做的就是定义需要的对象,然后在IOC容器里面配置对象之间的关系,最后去IOC容器里面取我们需要的对象就可以了。

IOC的好处

  • 资源(对象)集中易管理和配置
  • 降低了使用资源双方的依赖程度(耦合度)
  • 不用自己组装,拿来就用(配置好就行)
  • 享受单例的好处,效率高,不浪费空间

Spring模块

Spring是一个非常完整的框架,主要分为6大模块:

  • Spring Core:核心功能,即IOC容器,解决对象创建及依赖关系
  • Spring Web:对web模块的支持
  • Spring Dao:对jdbc操作的支持(jdbcTemplate)
  • Spring ORM:对ORM框架的支持
  • Spring AOP:面向切面编程
  • Spring EE:对javaEE其他模块的支持

你可能感兴趣的:(Java-Spring,java,spring)