Spring中有三种注入方式,一种是set注入,一种是接口注入,另一种是构造方法注入。
2) AOP切面编程
AOP就是在代码中的纵向的编程,就如同一把刀将一个对象在需要的地方切开,假如,在service层中业务a和业务b都需要共同的操作,例如编写日志记录,与其在每一层中都添加同样的代码,那不如不如写一遍代码,让两个业务共同使用这段代码。这就是AOP切面编程。
Spring的AOP实现有两种方式:
动态代理,动态代理必须要提供接口。
CGLIB,而CGLIB实现是有继承。
框架优点:
轻量级的容器框架对代码并没有太大的侵入性。
AOP可以非常方便的的进行功能模块的编写,遵循闭合原则。
创建对象默认是单例的,即是单线程安全。
3) SPRINGMVC
SPRINGMVC也算是Spring的一部分,但是把他单独拿出来因为他涉及MVC模式,他的思想是WEB的分层结构,即将WEB分层为MVC结构。M:model,V:view,C:controller。这种思想将整个web层进行解耦,这样维护起来就方便很多。让我们简化了很多开发。原先我们是在SERVLET中去完成所有的事情,现在我们通过分层将其变为每一层单独负责一部分,相互协调共同完成所有事情。Model来解决数据交互层,view指页面层,controller网页交互层。
Spring MVC的全部工作流程如下:
前端控制器将请求发送给页面控制器处理器,这个就是controller层,与页面请求交互,页面将委托请求交给处理器,处理器controller将判断选择哪个service层来进行处理事件,controller层调用业务对象,调用model模型,进行逻辑处理,处理返回模型数据,将数据模型返回给controller,然后controller层决定返回给哪个视图,view层页面显示给用户。
Spring MVC处理请求的流程如图1.2所示
2MVC模型
Spring MVC优势:
1.分层清晰,角色划分明显。MVC M model 数据模型,这里主要处理具体的事件,处理用户请求的具体事件,主要分为service层和DAO层,用来处理具体的逻辑事务和数据持久化。C controller在处理用户页面的数据请求,用户通过主页面向后台发送请求,由controller层来处理请求,来处理选择哪个model层来处理数据,处理完数据后将返回给view层,通过ModelAndView返回信息,V view层,页面层,这里具体是来展示不同的信息。在controller层去选择不同页面。
2、分工明确,而且扩展非常方便,因为这种分层非常好,使代码的耦合度降低,我们可以很方便的去增加任何功能。因为分层的原因,我们也可以单独去增加功能。我们可以单独去增加view层,也可以单独去增加model层,也可以去增加controller层,因为每一层功能分工明确,即可以增加也可以减去。
3、一个POJO,只有一个实体类。
4、Spring MVC和Spring无缝隙融合,这是其他框架没有的优势,springmvc其实也算是spring的一部分,所以spring 完全支持Spring MVC。
5、Spring提供的JUNIT测试,可以很方便的对model层进行测试,可以检测各个功能。
6、在view层中JSP页面,因为有非常强大的JSTL标签库,这个非常方便JSP编写。
1.1.2 Hibernate3
Hibernate并不难,无非是对JDBC进一步封装。它将代替JDBC对数据库操作,中文意思就是冬眠,是对数据的数据持久化。更加方便的时我们可以完全不用去写SQL语句,替我们完成对数据操作,我们就可以不用去学习sql语句。
我们都知道web分层,知道表示层,业务层,数据层,而hibernate就是数据层的数据持久化的框架。而持久层的框架还有MYBATIS和IBATIS和JDO,OJB,EJB的持久框。