1、Spring In Action 4th笔记(1)

Spring In Action 4th笔记(1)  2016-12-28

1、Spring是一个框架,致力于减轻JEE的开发,它有4个特点:

  1.1 基于POJO(Plain Ordinary Java Object,简单Java对象)的轻量级和最小倾入式编程;

  关于侵入式,引入一篇文章:http://www.myexception.cn/program/614076.html

  侵入式和非侵入式的区别
  简单说一下我的理解吧。假设大家都想要把用户代码塞到一个框架里。侵入式的做法就是要求用户代码“知道”框架的代码,表现为用户代码需要继承框架提供的类。非侵入式则不需要用户代码引入框架代码的信息,从类的编写者角度来看,察觉不到框架的存在。
  例如:
  使用struts的时候,我需要继承一些struts的类,这时struts侵入到了我的代码里。
  使用spring,编写一些业务类的时候不需要继承spring特定的类,通过配置完成依赖注入后就可以使用,此时,spring就没有侵入到我业务类的代码里。

  侵入式让用户代码产生对框架的依赖,这些代码不能在框架外使用,不利于代码的复用。但侵入式可以使用户跟框架更好的结合,更容易更充分的利用框架提供的功能。
  非侵入式的代码则没有过多的依赖,可以很方便的迁移到其他地方。但是与用户代码互动的方式可能就比较复杂。

  这两种方式都有各自的优缺点吧,主要看实际开发时怎么权衡了。

  1.2 基于DI(依赖注入,)和面向接口实现松耦合;

  DI:引入一篇文章的观点(http://www.cnblogs.com/yangecnu/p/Introduce-Dependency-Injection.html),就是我需要什么,你去帮我拿来就好了,我不需要自己去寻找。

  

  关于什么是依赖注入,在Stack Overflow上面有一个问题,如何向一个5岁的小孩解释依赖注入,其中得分最高的一个答案是:

  “When you go and get things out of the refrigerator for yourself, you can cause problems. You might leave the door open, you might get something Mommy or Daddy doesn’t want you to have. You might even be looking for something we don’t even have or which has expired."

  当你自己从冰箱里面取东西时,你发现了些问题,你可能忘了关冰箱门,你可能拿了爸爸妈妈不准你拿的东西,你甚至可能拿了以前没有吃过或者过期的食物等等问题。”

  What you should be doing is stating a need, “I need something to drink with lunch,” and then we will make sure you have something when you sit down to eat.”

  这时候你该怎么做?你只需要对着你的爸爸妈妈说:“我吃午餐时想喝点东西。”,他们就会在你坐下来吃午饭时给你准备一份饮料。

  映射到面向对象程序开发中就是:高层类(5岁小孩)应该依赖底层基础设施(家长)来提供必要的服务。

  1.3 基于AOP(面向切面,Aspect Oriented Programming)和惯例实现声明式编程;

  AOP:简单点说就是我们在处理一件事情时,可能要做点其它的事情,包括在它之前或者之后。至于实现,后期再补了(因为目前还不会--)。

  1.4 基于AOP和模板减少样板式编码。

2、

原文地址:https://www.cnblogs.com/weizhxa/p/6228256.html