您的位置:首页 > 编程语言 > Java开发

Spring in action 00

2016-05-26 00:04 218 查看
从今天开始再学习一遍Spring,这是一个强大的开源框架,最早由Rod Johnson 创建,我也不认识他。每个学习Java 的童鞋都用过,但是你真的很懂它么,反正我是不太懂,所以从今儿起,我要开始一步一步的弄懂它,特此记录整个学习的过程,希望对以后个人的知识回顾,分享学习经验予其他小伙伴,对自己对他人都会是一件非常有意义的事情,还是先别把自己伟的太大。先把这个过程中会出现的问题解决掉再说吧。总之,温故而知新,可以为师也。仅此而而

DI —> Dependency Injection

这里先说说DI,还没到详细。书上说,目前项目中应用DI,会让你的代码变得更简单并且更加的容易理解和测试。至于是不是这样呢,但是肯定没人说,DI太low了,怎么怎么样,相信读者盆友们也就不会向下读了,anyway 。。

通过DI,对象的依赖关系将由系统中负责各对象的第三方组件在创建对象的时候进行设定,对象无需自行创建或者管理它们的依赖关系,(我觉得这句说的非常好),依赖关系将被自动注入到需要它们的对象中去。

看这里之前先把环境配好吧,我用的是Eclipse(Version: Luna Release (4.4.0)),因为我肯定会写一些示例代码来完成一些功能说明,所以新建一个Maven项目:hello-world



先走马观花看一遍,我们先到Spring的官网上去看看它的guide:http://projects.spring.io/spring-framework/

在Quick Start 里:



我使用的是maven来去管理,Gradle现在也非常的棒,但是买了一本《实战 Gradle》还没看,就先用maven了,在我的项目的pom.xml里把这段代码加上,保存后就可以去load Spring的jar包了。然后把helloSpring包下面的三个java类写好后,运行一下Application.java。就可以看到:



代码和spring 官网上面一样的,可以参考一下。

再确保环境一切都OK了之后 ,回过头来再去看DI:先看一下示例



其中Quest.java 和 Knights.java两个都是interface,并且在Quest.java中有一个返回值为void的embark()的方法

这是一个非常的好例子,不用过多的说明上面两个接口做什么用的,只管知道它们都是接口,也就意味着,具体怎么实现,会非常的灵活。即松耦合,也就是这么一句话:如果一个对象只通过接口(而不是具体的实现或初始化过程)来表明依赖关系,那么这种依赖就能在对象本身毫不知情的情况下,用不同的具体实现进行替换。

对依赖进行替换的一个最常用就是在测试时候使用mock实现,参考:http://mockito.org/,写一个junit test ,来测试一下,junit 用的是版本是:4.11



参考:http://maven.apache.org/surefire/maven-surefire-plugin/examples/junit.html

在pom.xml中配置好之后 :



这里使用mock框架Mockito去创建一个Quest接口的mock实现,通过这个mock对象,就可以创建一个新的BraveKnight实例,并通过构造器注入这个mock Quest,调用embarkOnQuest()方法时,验证embark()方法被调用了。



可以看到绿条了。这里的 mock(Quest.class) 是任意一种实现,从而体现出了松耦合。

这篇文章没有太多讲DI,后面的会接着写,写更详细些,未完待续。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring 开源框架