Session 1 初识Spring

一些想法

       虽然说接触spring已经这么长时间了,不管大大小小的项目基本都用到了spring,虽然说到spring大家都会想到什么aop和ioc(di) ,但是只是知道spring主要是由这两个方面组成,但实际用起来,也只是一些注解什么的,也没有深入的去了解他的机制是什么,所以,最近决定要好好捋一捋spring,因为虽然每天都在用,但是还是觉得少了点什么,so,废话不多说,let`s go。

一 ioc和aop

1.1 ioc

竟然学到spring那还是要简单了解一下ioc和aop的,首先说一下ioc(di),即控制反转,或者是依赖注入,假设我们有一个骑士,和一个杀boss的任务

```

/**

* 这是一个只能杀boss的骑士 实现了knight的接口

*/

public class KillTheBossKnightimplements Knight{

private KillTheTimokillTheTimo;

    public KillTheBossKnight(){

this.killTheTimo =new KillTheTimo();

    }

@Override

    public void doTheJob() {

System.out.println("杀死了一个提莫大魔王");

    }

public KillTheTimogetKillTheTimo() {

return killTheTimo;

    }

public void setKillTheTimo(KillTheTimo killTheTimo) {

this.killTheTimo = killTheTimo;

    }

```

可以看到要想让骑士完成杀死提莫的任务,就需要将这个任务通过骑士的构造函数注入,这样这两个类就紧耦合在一起,将这个具体的任务和这个骑士紧紧的耦合在了一起,那如果这个其实要去做其他任务呢?这还需要修改他的构造,这样的代码就很不漂亮,因为耦合度越高,后期维护的成本就越高,所以我们可以通过另外一种方式来给来给骑士下发任务。

接下来有请我们勇敢的骑士上场

```

/**

* 没有将具体的操作交给这个骑士,而只是给了他一个任务

*/

public class BraveKnight {

public Jobjob;

    public BraveKnight(Job job){

this.job = job;

    }

public void doTheJob(){

job.doTheJob();

    }

}

```

从这里可以看出,这个骑士只是在构造里面传入了一个Job ,具体是什么Job他并不知道,所以这就是di的意义所在,这个骑士只知道他有任务,但是具体是什么任务,只有等他具体接收的时候才能知道,所以他就可以成为很多骑士,杀死提莫的骑士,杀死亚索的骑士。。。这就是di所带来最大的收益——松耦合。所以我们继续向下操作

```

Job killYasuo =new KillTheYasuo();

BraveKnight braveKnight =new BraveKnight(killYasuo);

braveKnight.doTheJob();

```

这样,就可以把杀死坑逼亚索的任务交给了这个骑士,这样这个其实就可以为所欲为的做任何他想做的事了,而不是仅仅只杀死一只提莫。

这就是依赖注入的思想。

1.2 aop

说完了ioc 接下里继续说说aop

aop 又称面向切面编程,相对于面向对象编程,这又是一个更牛逼的思想,那么何为aop呢,工作中一般任务是怎么划分的?基本分为两种,一种是按照业务逻辑分,比如,订单系统,购物车系统等等,这是在业务层面划分的,还有一种是从代码层面,视图层啊,业务层啊,数据处理层啊,这些划分就是为了更好去处理一些事情,让工作变得更加有效率,代码结构更加清晰。aop也可以理解成这样的一种思想,一般被定义成一种实现关注点分离的技术。系统是由多个模块组成,每个模块负责自己的一个特殊的功能,但是除了自己的任务以外,往往这些模块还需要处理其他事情,比如权限,日志,事务等的管理,这是每个系统都要面临的问题,而aop的思想就是将这些跟主业务无关但是又必须需要的相同的东西剥离出去统一管理,这样就能让这些模块具有更高的内聚性,更加专注于自身的业务,从而使代码更加简洁。

接下来我们继续以骑士与坑逼提莫的故事继续向下细谈

我们假设每次在骑士执行任务的时候都有一个人来记录他的行为,在每次执行任务之前和之后都会记录,我们就叫他死歌吧。我们来把他创造出来

```

public class DeadSinger {

public void singBeforeJob(){

System.out.println("骑士马上就要干掉那个家伙了!!!");

    }

public void singAfterJob(){

System.out.println("骑士干掉了那个家伙了!!!");

    }

}

```

在每次骑士执行doTheJob的时候都需要调用死歌的这两个方法,接下来我们来继续操作

```

public BraveKnight(Job job,DeadSinger deadSinger){

this.job = job;

    this.deadSinger = deadSinger;

}

public void doTheJob(){

deadSinger.singBeforeJob();

    job.doTheJob();

    deadSinger.singAfterJob();

}

```

我们在骑士都构造中传入了这个死歌,并在他执行Job的前后做出了记录,当骑士在执行任务的时候就会有记录,但是这里总感觉有点不对劲,为嘛这个骑士需要管理这个死歌,骑士只需要专心做他的任务就行了,为何还要关系死歌的活动呢,这就很奇怪了,而且把死歌注入这个骑士的体力,呃,想想有点可怕。所以我们就需要将死歌记录从这个骑士执行任务中剥离出来,让死歌专心记录,让骑士专心做任务,并且骑士不应该能感受到死歌的存在,这就是aop的思想,具体的实现,我们下回再聊。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,656评论 18 139
  • 梦里 渐进江南 草长莺飞 你骑白马而来 潇洒漂亮的脸庞 吹着悠扬的短笛 我想靠近你 又自惭形秽 我想离你而去 却又...
    元小默_89fd阅读 176评论 0 0
  • 一、这一节印象最深刻的三个环节? ①同学课前讲解时间的把握。 ②自己在一定时间内写出自己所具有的多个能力。 ③智力...
    子木_1df4阅读 308评论 0 1
  • “见过?”刘小也呢喃道,他搜索了记忆所有角落并不记得有这人存在的痕迹。 “梦里。”那人似提点道。 听到梦这一词,刘...
    2485f51b393f阅读 281评论 1 1
  • 老大离家久不还,清音几曾到关山 锦城花好客弗在,蜀道路难谁敢攀 岁华催人改笑貌,霜重湿衣易红颜 佳节从来不由主,梦...
    半个读书人阅读 189评论 12 22