Spring Day1 spring框架的入门与体系的初步
一、什么是Spring?为什么要使用Spring?
spring是轻量级的javaEE解决方案,是众多优秀设计模式的封装。在spring出现之前使用的javaweb项目的编程容易出现诸多问题:代码的侵入性强、可移植性差。而且使用非常多的接口,更加不方便于测试,运行环境配置也比较麻烦,也就是说服务器成本很高。
理解起来比较麻烦,必经有些时代了,所以理解比较困哪。但是总结之前编程的特点:
web开发的分层开发必须整合struts2和mybatis框架,这些框架的使用时遵循了javaEE开发分层开发的原则的。尽管带给程序员一定的效率。但是还是存在问题的。
首先的问题就是程序在执行的过程执行调用。DAO层和实现之间以及service层以及实现之间存在依赖关系。就是实现类写死在了调用的主程序中。这在实际的开发过程中是非常忌讳的。换个专业的名词就是两者之间产生了依赖关系。A程序要实现功能就必须调用B程序,他们就构成了依赖。传统方式的代码写死,基本上就是给后期维护判了死刑。也基本上告别了分工合作。
其次问题就是在开发过程中,有些功能并不是特别的需要主动关注。什么意思?就是有些功能的代码完全可以做到不必重复的书写,可以完全的做成工具,但是工具的调用毫无疑问就会产生依赖关系。这样就会重复第一个问题。所以借助spring框架。程序员在开发过程中完全可以只关注程序的主要功能,而是把程序的其他非核心功能交给框架来代理。
二、Spring的设计模式
主要涉及三种设计模式的封装:工厂模式、代理模式和模板模式。至于怎么使用的,先不关心,先做好理论准备。
三、几个专业术语
IOC:控制反转——对象成员变量的初始化交给了spring来处理,不再像以前一样自己手敲代码(不还是手敲吗?),好处就是解耦合。这样的的思路被抽取出来形成了工厂模式。
DI:依赖注入。对于产生依赖关系的类之间,需要借助spring来为他们的属性进行手动注入。
四、AOP的理解
在代理模式的指导下,程序员的代码被分为两个部分:核心业务和非核心业务。其中核心业务代表程序的主流程;是程序的主体部分,承载业务活动的主要部分。而非核心业务,诸如安全、日志、事务等比较次的辅助性业务。
这样一来,就可以视为程序开发过程就是相当于在主程序流上面附加一些较为少的辅助性业务。至于辅助性业务就由spring框架代劳帮我们处理。
如图,主程序流被人为的分割为几个部分:实体类、表、Dao接口、Mapper文件、Service接口、Service的核心业务这几个部分。
他们之间是存在依赖关系的,但是这种依赖是程序员不愿意看见的。设置与连连接数据库这样比较底层的操作都不愿意反复的去做。所以就产生了希望将额外部分剥离的打算:核心保留逻辑,额外功能由程序流自由添加的模式——代理模式。
总而言之:所谓代理,就是重要的事情自己干,次要的事情交给框架处理。
五、最后
这些思路整理的并不是特比的系统,姑且作为入门,先开个头吧