什么是Spring
Spring是一个轻量级的java开发框架,是为了解决企业级应用开发的业务逻辑层和其它各层的耦合问题,实现解耦合。
Spring最基本的使命是解决企业级应用开发的复杂性,及简化java开发。
Spring可以做很多功能,但是这些功能的底层都依赖于它的两个核心特性,也就是依赖注入(dependency injection)也就是控制反转(ioc)和面向切面编程(AOP)
- 基于POJO的轻量级和最小侵入性编程;
- 通过依赖注入和面向接口实现松耦合;
- 基于切面和惯例进行声明式编程;
- 通过切面和模板减少样板式代码。
介绍Dao层、Service层和Controller层
这三个层都是很重要的,首先明怀我来介绍一下下他们之间的关系,从左到右依次表示为依赖关系
Controller->service->Dao
Service层是建立在DAO层之上的,建立了DAO层后才可以建立Service层,而Service层又是在Controller层之下的,因而
Service层应该既调用DAO层的接口,又要提供接口给Controller层的类来进行调用,它刚好处于一个中间层的位置。
每个模型都有一个Service接口,每个接口分别封装各自的业务处理方法。
controller:也可以成为action层,业务模块流程。我经常喜欢用控制视图的跳转来简单形容,但是这个是不全面的,因为他除了控制视图的转换之外,还控制了业务的逻辑,但是,这里的控制业务逻辑不是业务逻辑的实现,而仅仅是一个大的模块,你看到之后,知道它实现了这个业务逻辑,但是怎么实现的,不需要关心,仅仅需要调用service层里的一个方法即可,这样使得controller层看起来更加清晰。
service:业务逻辑层。接着controller层中,可以想到,service层是业务逻辑(商务逻辑)的具体实现。它向上层的controller层提供接口,并且使用dao层提供的接口。存在的必要性:有时候,我认为更多的时刻,service层中仅仅是调用dao层中的一个方法,那么它是否有必要存在呢?答案是肯定的。因为,假如将来客户的业务有一定的变动,那么这样一来,你只需要在service层中进行一些变动即可。记住,你写程序不应该仅仅为实现功能考虑,更多的还是应该为将来的维护考虑,因为大部分的时间还是在维护上的。
dao:数据访问对象。他只负责对数据进行访问,而不管其他的什么业务逻辑,其实就是只干活,而不管为什么干。在dao层里面要完成的是数据访问逻辑以及对数据的访问。数据访问,大部分情况下就是对数据进行操作。dao层为上层的service层提供接口。dao层在操作完成后,如果是查询,则返回对象,如果是增删改,则仅仅需要返回一个boolean值表示成功失败即可。
于是我们提出了Spring这样的容器技术,也就是说,当Dao层之前使用的是mybatis数据库技术,现在要使用Herbinate技术的话,我们就不需要在service当中进行修改,还有就是我们每次通过service来访问Dao层数据的时候,都需要新创建一个对象来访问,这样也会大大地增加二者之间的依赖性,于是我们可以通过Spring容器来为我们进行一个创建。
IOC容器
为什么有ioc容器这个东西呢,简单来说,就是因为我们想要减轻每次想要用到service当中的类和方法的时候,不用重新在Test当中进行一个新的创建,只需要在容器当中设置其对应的类,然后每次从中取出就可以了。
举例
首先我们创建一个类