Sping Mvc 学习笔记(一)
2015-12-17 11:28
344 查看
对于Spring 的历史以及概述这里就不淡了,相信大家百度一发就会看到很多,同时Spring的优势相信大家也都有所了解,这里也不帮着它再进行打广告,还是直接上干货!
2.Java语言反射机制
3.BeanFactory、ApplicationContext以及WebApplicationContext基础接口
究竟什么是所谓的控制反转?通过书中的术语说就是某一接口具体实现类的选择控制权从调用类中移除,转交给第三方决定,而这里就要提到由泰斗人物Martin Fowler提出的DI(依赖注入:Dependency Injection)了,用它替代了IoC,这样更容易被理解。
构造函数注入
这样我们就完成了一个简单的构造函数注入,同时将革离的扮演者刘德华也一起“注入”到墨攻的剧本中了。
属性注入
通过以上的构造函数的注入,我们可能会发现,并不是在任何的时候都需要革离的出现,这时我们可以考虑一下属性注入。属性注入我们可以通过Setter方法完成调用类所需的依赖注入。代码如下:
我们在进行实例化MoAttack的时候,并未指定任何的扮演者,只有在需要革离出场的时候,才调用其setGeli()方法注入扮演者,这样针对不同的剧本可以注入所需的不同角色了~
接口注入
将调用类所有依赖注入的方法抽取到一个接口中,调用类通过实现该接口提供的相应的注入方法,这样我们就需要额外的去声明一个借口,增加了类的数目,而且它的效果和属性注入并无本质区别,我们不提倡这种做法,这里就不进行详细介绍了。
我们可以将Spring理解为一种容器,它通过配置文件或注解描述类和类之间的依赖关系,自动的完成类的初始化和依赖注入的工作。下面是对以上的实例进行配置的配置文件片段:
这样我们可以通过new XmlBeanFactory(“beans.xml”)等方式即可启动容器。在容器启东市,Spring根据配置文件的描述信息,自动实例化Bean并完成依赖关系的装配,从容器中即可返回准备就绪的Bean实例,后续可直接使用之。当然,对于这样神奇的事情,身为博主的我,也被惊呆了。它归功于Java语言本身的类反射功能.So,接下来我们将会介绍Java语言的反射知识!
IoC容器概述
1.IoC概念所包含的设计思想2.Java语言反射机制
3.BeanFactory、ApplicationContext以及WebApplicationContext基础接口
1.1 IoC概述
IoC(控制反转:Inverse of Control)是Spring容器的内核 ,AOP、声明式事物等功能在此基础上开花结果。它主要包含了两个内容:(1)控制(2)反转究竟什么是所谓的控制反转?通过书中的术语说就是某一接口具体实现类的选择控制权从调用类中移除,转交给第三方决定,而这里就要提到由泰斗人物Martin Fowler提出的DI(依赖注入:Dependency Injection)了,用它替代了IoC,这样更容易被理解。
1.2 IoC的类型
从注入的方法上看,主要可以划分为三种类型:构造函数注入、属性注入和接口注入。Spring 支持构造函数注入和属性注入。以下举例说明以下三种注入方法的区别。构造函数注入
public class MoAttack{ private GeLi geli; //注入革离的具体扮演者 public MoAttack(GeLi geli){ this.geli = geli; } public void cityGateAsk(){ geli.responseAsk("墨者革离!"); } }
public class Director{ public void direct(){ //指定角色的扮演者 GeLi geli = new LiuDeHua(); //注入具体扮演者到剧本 MoAttack moAttack = new MoAttack(geli); moAttack.cityGateAsk(); } }
这样我们就完成了一个简单的构造函数注入,同时将革离的扮演者刘德华也一起“注入”到墨攻的剧本中了。
属性注入
通过以上的构造函数的注入,我们可能会发现,并不是在任何的时候都需要革离的出现,这时我们可以考虑一下属性注入。属性注入我们可以通过Setter方法完成调用类所需的依赖注入。代码如下:
public class MoAttack{ private GeLi geli; //属性注入方法 public void setGeli(GeLi geli){ this.geli = geli; } public void cityGateAsk(){ geli.responseAsk("墨者革离!"); } }
public class Director{ public void direct(){ //指定角色的扮演者 GeLi geli = new LiuDeHua(); MoAttack moAttack = new MoAttack(); //调用属性Setter方法注入 moAttack.setGeli(geli); moAttack.cityGateAsk(); } }
我们在进行实例化MoAttack的时候,并未指定任何的扮演者,只有在需要革离出场的时候,才调用其setGeli()方法注入扮演者,这样针对不同的剧本可以注入所需的不同角色了~
接口注入
将调用类所有依赖注入的方法抽取到一个接口中,调用类通过实现该接口提供的相应的注入方法,这样我们就需要额外的去声明一个借口,增加了类的数目,而且它的效果和属性注入并无本质区别,我们不提倡这种做法,这里就不进行详细介绍了。
1.3 通过容器完成依赖关系的注入
前面介绍了这么多,相信大家已经对IoC有了一定的理解,这样我们就可以上正菜了~我们可以将Spring理解为一种容器,它通过配置文件或注解描述类和类之间的依赖关系,自动的完成类的初始化和依赖注入的工作。下面是对以上的实例进行配置的配置文件片段:
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd <!--实现类实例化--> <bean id="geli" class="LiuDeHua"/> <bean id="moAttack" class="com.ioc.MoAttack" p:geli-ref="geli"/><!--通过geli-ref建立依赖关系--> </beans>
这样我们可以通过new XmlBeanFactory(“beans.xml”)等方式即可启动容器。在容器启东市,Spring根据配置文件的描述信息,自动实例化Bean并完成依赖关系的装配,从容器中即可返回准备就绪的Bean实例,后续可直接使用之。当然,对于这样神奇的事情,身为博主的我,也被惊呆了。它归功于Java语言本身的类反射功能.So,接下来我们将会介绍Java语言的反射知识!
相关文章推荐
- C语言
- 浅析Java中CountDownLatch用法
- WFST papers
- yii2 开启dubug调试栏
- 关于IE8及更低版本使用innerHTML出现的问题
- 关于 redis、memcache mongoDB 的对比
- media="screen"啥意思?
- spring整合hibernate
- GCD Again(杭电oj1787)(欧拉函数)
- Android HTTPS SSL双向验证
- 从原理上理解NodeJS的适用场景
- 基于springMVC+springSecurity3.x+Mybaits3.x的权限系统,,开放源码,支持开源
- CAS (5) —— Nginx代理模式下浏览器访问CAS服务器配置详解
- java生成16位随机UUID数
- Zynq AMP - Running Linux and Bare-Metal System on Both Zynq SoC Processors
- echo命令详解
- vc网络编程准备
- 十进制小数转二进制小数方法
- html5 Audio音乐播放器(canvas圆形音乐播放进度条)(一)
- 使用jquery.qrcode生成二维码,在线演示,下载源码