小伙伴们
我们要学习框架了
准备好了吗?
那我们开始了
MVC
M (model) 模型 是应用程序中用于处理程序数据逻辑的部分。(jdbc,hibernate,mybatis,spring-JdbcTemplate)通常模型对象负责在数据库中存储数据。
C (controller) 控制器 是应用程序中处理用户交互的部分(servlet, Struts1, Struts2, springMVC)通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
V (view) 视图 是应用程序中处理数据显示的部分(HTML, jsp, freemarker, velocity) 视图是依据模型数据创建的
其实在 MVC 概念形成之前还经历了两种模型,我们称之为:
model1 (jsp+javabean) 纯jsp开发模式
将视图层和控制层混在一起,但将模型层脱离出来,这也是为什么在 jsp 中有那么多的其他标签的原因。
model2 (jsp+servlet+javabean) 简单的MVC模式
jsp 主要是用于视图层 servlet 用于控制层 javabean 用于模型层。
了解玩这些历史之后,有助于你们和那些工作年限久一点的程序员交流呦!
Spring
Spring 是一个轻量级的控制反转 (IOC) 和面向切面 (AOP) 的容器框架
控制反转 IOC (inversion of controller)
IOC 是一种概念,是把我们程序中类与类之间的依赖关系交给容器去处理,一般有两种方式
依赖查找 DL (dependency lookup)
程序提供查找方式,交给容器去查找(回调函数)
依赖注入DI (dependency injection)
程序不提供查找方式,提供合适的构造方法或者setter方法,让容器进行注入来解决依赖关系
spring的控制反转就是通过依赖注入来实现
我们来做一个例子
新建一个 Java 工程,按照分层开发的模式,先来创建三个包 action 控制器层,service业务逻辑层 和 DAO数据层。
先来写一个DAO接口。
写一个类实现这个接口
这个地方应该写调用数据的方法的,我们直接返回 true 表示我们利用 jdbc 通过了数据库的验证!
前端页面获取到 用户名和密码 会传到 action 层,然后 action 层来调用service 层,service 层在来调用 DAO 层操作数据库。现在DAO 层写完了,再来写 service 层。为了方便我们就假设从 action 拿到的用户名和密码都是aaa。
这边引入一个概念—依赖:简单的说,一个类实现某个功能需要依靠另外一个类的帮助来实现,就像 UserService 必须依赖于 Dao 方法才能实现功能
现在假设我们不想用 jdbc ,想用其他的方法了!( 如hibernate,mybatis) 我们该怎么办?创建一个other实现方法来实现我们的接口
修改一下我们的代码
虽然修改代码是可以实我们的想法,但是并不是很好。当一个方法有多个实现的情况下,我们一般是基于接口的方式进行编程
演示一下
利用构造方法来实现这个操作
这下看起来是好一点了,但是还是有一个问题呀!!每换一次方法都要改一下代码。现在只是一个小功能,还好一点。以后功能多了呢!改代码都要改半个月!
进入 spring
spring 的下载地址:http://repo.spring.io/release/org/springframework/spring/
Spring 的 IOC 容器通过依赖注入来实现程序之间的依赖关系,达到解耦的作用
依赖注入是指一个对象需要另外一个对象时,无需在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序。
spring项目环境搭建需要的jar包
spring-beans-4.2.1.RELEASE.jar
spring-context-4.2.1.RELEASE.jar
spring-core-4.2.1.RELEASE.jar
spring-expression-4.2.1.RELEASE.jar
剩下几个是 log4j 和 JUnit 的包
配置文件 applicationContext.xml,加上 bean 约束
bean 的约束在 spring-framework-4.2.1.RELEASE\docs\spring-framework-reference\html\xsd-configuration.html 文件查看
在配置文件中定义我们的类
在 spring 实现依赖注入有两种方式
通过构造方法的方式注入:
被依赖的类必须有构造方法
在配置文件里面来描述依赖关系
测试一下
想用其他的方法的时候,就把上面的注掉,就像下面这样
我们测试一下
通过 setter 方法注入
被依赖的类里面生成依赖类的setter方法
在配置文件来描述依赖关系
换一下
今天的 spring 就先写到这里
再见了
拜拜!
网友评论