J2ee的课程接近尾声,今天老师开始讲了ssh框架中传说中的spring,在介绍这个spring之前,先来对之前的知识进行一个系统的总结。
首先,ssh框架必懂的struct2,在struct里面,我们只要是学习如何使用拦截器把界面的值利用getmodel()等方法来传递给action里面需要用到的属性值,这样做的一个好处,就是避免了之前一直需要使用request.getparament的方法来获取前台界面上的值,其实说白了就是lazy啊有木有~
其次,我们学习了JPA和hibernate的方法来对数据库进行操作,hibernate的出现简化了我们的代码,可以使我们少作很多事情,至少不需要像传统的那种一直需要写sql语句。
学习了struct2和hibernate的同时,我们还在学习面向对象分析与设计这门课程,重在设计,j2ee这是用技术把设计的思想来表达出来(我去,说这些干啥,跟spring有毛线关系,好吧,别急,慢慢看去)。截止到这里,我们如果要开发一个项目的话,这个网站项目的整体的体系结构应该是怎么样的呢?
就在课堂上的讨论,以及看各种大牛的文档,我们可以看到,整个项目的包分为以下四层:
view-----------------struct 2来做这一块;
service-------------调用下面的DAO的代码;但是不要采用“面条式”的方法来做,service一般不需要太多,可以把
许多方法在一个service里面,具体的可以按照用例或者功能模块来分。service划分的好坏,
直接影响到了你组件图是否能画的出来。
DAO----------------hibernate的框架来实现,而且dao层基本没什么自己的属性;
model--------------这个model层的话在,主要就是一些实体类以及一些公用的类。
这样看起来,整个的项目非常的perfect的,可素可素说好的SSH框架呢??spring身在何处??还有必要要spring吗?要spring能帮助我们做些什么?
那么,问题来了………………
在上面的体系架架构中,我们会发现在service里面调用dao的方法,意味着我们需要new很多个dao的对象,而spring正是来帮助我们解决这样的问题的。这里就需要提到一些概念:inversion control(反向控制) 或者是dependency injection(依赖注入,spring的依赖注入详解请看这个大神的代码:http://blessht.iteye.com/blog/1162131)
也就是说我们用spring框架在,只要在配置文件中注入,这个对象就会存在了。这种方法其实跟struct 2的拦截器的做法是一样的,不过这种思想的的确确是spring先提出来的。
spring的主要内容如下:
这里我接触到的主要是spring DAO,其机制其实是利用JDBC的方法,需要些一大堆的sql语句,这一点我们还是使用hibernate吧。spring的MVC的框架,实际上,spring的MVC的V层其实是相当与做了struct 2所做的事情,两者没什么差别,有空可以去学习一下。
说了蛮多的,可素好像还是不太清楚到底是如何在项目中使用spring的呢?
一、添加所需要的spring包;
二、在web.xml文件里面添加如下配置:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
使用JSF的时候,需要用servlet来配置;使用struct 2的时候需要用filter来配置,所以spring只能用listener了、
必须要告诉Apache我使用了说明框架,所以需要写配置文件。
三、在spring的配置文件中写自己的dependency injection吧。这个看上面写的连接就好了。
需要了解的一些小知识: