Action里面调Service,Service里面调DAO,在Action里面new一个Service,在Service里面new一个DAO。有了Spring之后可以不用new对象了。AOP里面有很多术语或者是思想是比较难理解的。除了这些之外呢就没有什么特别复杂的地方了。

Spring3.2是Spring里面最高的版本了。Spring的依赖包spring-framework-3.0.2.RELEASE-dependencies有很多东西,比如说c3p0,log4j,dbcp连接池等等。有很多非常非常多的内容,除了Spring之外的要用的内容基本都可以在这个依赖包里面找到。Spring3.0.2提供了依赖包,但是往上升级的时候依赖包就没有了,也就是说Spring3.0.2的依赖包已经足够了。


UserService userService = new UserService();这样的写的话一般程序是不容易扩展的。因为在面向对象中最好不要直接new一个实现类,一般去面向接口编程。一般是为这个实现类创建一个接口,面向接口编程。面向接口编程是可扩展性。假设UserService是接口,UserService userService = new UserServiceImpl();就很容易扩展了。

但是这种方式也不是很好.面向接口编程也不是很爽的.把程序具体的实现编写到程序中,切换底层的实现,需要修改源代码.造成程序:紧密耦合.什么是紧密耦合?就是我在这里每次想修改一个东西就需要修改程序的源代码。

Java开发程序的OCP原则。OCP:open-close原则:扩展功能尽量不要修改源程序,提供新的方法或者是属性的形式扩展其功能.对扩展是开放的,对修改是关闭的.

使用工厂模式来进行扩展,不修改其源代码。提供一个工厂类让接口和具体实现类完成解耦。

工厂类的写法如下:

public void BeanFactory{

     public UserService getUserService(){//提供一个方法返回UserService.

       return new UserServiceImpl();

     }

}

这样我们在web层就可以写个UserService=或者是获得工厂类以后调用工厂类的方法。把程序与具体实现类的耦合转成与工厂的耦合.与实现类完成解除耦合的形式.也就是说UserService与UserServiceImpl它俩之间就没有了这种耦合的关系了.

有人说这样也不好啊,虽然接口没有与具体实现类耦合,但是它与工厂耦合了.你现在UserService  userService  得先获得一个工厂。假设BeanFactory已经有了,BeanFactory factory = ...

//获得工厂

BeanFactory factory  = ...

UserService userService = factory.getUserService();

这样就变成了一个工厂的耦合。这样也不并不是特别的好。如果有了反射和配置文件,可以这么去做。


public class BeanFactory{

public UserService getUserService(){

//反射+配置文件

Class.forName(类名).new Instance();//直接生成一个类的实例,把这个实例一返回.

//在这里读取到类的全路径就可以了。

}

配置文件可以是xml、properties(属性文件).假设配置文件是属性文件(properties),可以这么写:

className =  cn.itcast.service.UserServiceImpl

可以读到ClassName那个key找到里面的内容把它放到Class.forName里面就可以生成对象实例把它返回了。这样我们每次再去修改这个内容的时候

不用去修改源代码了。切换实现不需要修改源代码了。


Spring IOC的底层原理=工厂+反射+配置文件。所以它的底层原理是提供一个工厂Bean,一个配置文件,把类全都配置到配置文件中,通过XML解析获取到类的全路径,从而反射获得一个类的实例。


这就是IOC容器底层原理的实现。

声明式事务的管理,只需要你把事务一配置,就是你不需要手动地开启事务或者是提交事务。在hibernate里面自己去开启事务或者是提交事务等等一系列的,这些你只要在Spring配置好之后你所有的DAO层、Service层不需要手动写事务的代码了。

day38 01-Spring框架的概的更多相关文章

  1. 04 Spring:01.Spring框架简介&&02.程序间耦合&&03.Spring的 IOC 和 DI&&08.面向切面编程 AOP&&10.Spring中事务控制

    spring共四天 第一天:spring框架的概述以及spring中基于XML的IOC配置 第二天:spring中基于注解的IOC和ioc的案例 第三天:spring中的aop和基于XML以及注解的A ...

  2. 01 Spring框架 基本介绍

    相信学习java,并且走Web道路的道友都应该知道Spring的大名,它的地位相信也不需要我在这里多说什么,接下来的文章就Spring的配置和使用来进行一些讲解. 首先学习框架我们都要考虑和做到以下几 ...

  3. spring框架总结(01)

    1.spring是什么? sprint其实就是一个开源框架,是于2003年兴起的一个轻量级的java开发框架,是有Road Johnson创建的,简单的来说spring是一个分层的JavaSE/EE( ...

  4. Spring 框架基础(01):核心组件总结,基础环境搭建

    本文源码:GitHub·点这里 || GitEE·点这里 一.Spring框架 1.框架简介 Spring是一个开源框架,框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 ...

  5. 最新 Eclipse IDE下的Spring框架配置及简单实例

    前段时间开始着手学习Spring框架,又是买书又是看视频找教程的,可是鲜有介绍如何配置Spring+Eclipse的方法,现在将我的成功经验分享给大家. 本文的一些源代码来源于码农教程:http:// ...

  6. 回顾Spring框架

    Spring框架: 传统JavaEE解决企业级应用问题时的"重量级"架构体系,使它的开发效率,开发难度和实际的性能都令人失望.Spring是以一个 救世主的身份降临在广大的程序员面 ...

  7. Spring框架简单介绍

    原文地址:  http://my.oschina.net/myriads/blog/37922 1.使用框架的意义与Spring的主要内容 随着软件结构的日益庞大,软件模块化趋势出现,软件开发也须要多 ...

  8. spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包

    下载spring http://spring.io/ 最重要是在特征下面的这段话,需要注意: All avaible features and modules are described in the ...

  9. Spring学习之旅(二)极速创建Spring框架java Web工程项目

    编译工具:eclipse 1)创建Web工程:spring_web_helloworld 2)导入所需jar包: 3)创建实体类:同上篇博文 4)创建配置文件hellobean.xml.同上篇博文 不 ...

  10. Spring框架+Struts2框架第一次整合

    1:Spring框架和Struts2框架如何整合??? Spring 负责对象创建 Struts2 用Action处理请求 2:Spring与Struts2框架整合的关键点: 让struts2框架ac ...

随机推荐

  1. Intel RealSense Depth Camera D435安装ROS 驱动——Ubuntu16.04

    官方教程 软件包下载链接 https://github.com/IntelRealSense/realsense-ros Download/Clone librealsense github repo ...

  2. CLOSE_WAIT问题讨论

    1.https://cloud.tencent.com/developer/article/1347610 2.https://blog.huoding.com/2016/01/19/488 3.ht ...

  3. Android基础控件ListView基础操作

    1.简介 基于Android基础控件ListView和自定义BaseAdapter适配器情况下,对ListView的数据删除和添加操作: public boolean add(E e) {//添加数据 ...

  4. python学习笔记3.2_数据导出

    一.data.to_csv:数据导出 1.to_csv:将数据导出为逗号分隔的文件 2.输出为其他分隔符的文件 写入到控制台,并打印:sys.stdout na_rep:对空值进行标注 二.serie ...

  5. windows server 文件夹和搜索选项被禁用了

    当我们需要调整 windows 文件夹相关的配置时,却发现“文件夹和搜索选项”被禁用了,下图是恢复正常的情况.被禁用时显示灰色,不能点击. 下面给出解决步骤: 打开“组策略”. 然后依次展开“用户配置 ...

  6. Odoo Documentation : Environment

    Environment The Environment stores various contextual data(上下文数据 ) used by the ORM: the database cur ...

  7. 基于宜搭的《T恤尺码收集》应用搭建

    简介: 在阿里,T恤是程序员必不可少的元素.每逢公司或者BU(部门)的重大节庆日,比如双11 .年会.新BU成立仪式.大型活动等,都会给员工定制发放统一的T恤或者POLO衫服装.而我们每次发放T恤之前 ...

  8. 阅读jeecms源码总结

    转载:https://blog.csdn.net/a382064640?t=1   Jeecsm使用框架包括:springMVC,HIbernate(数据持久层框架),Quartz(作业调度框架),a ...

  9. 装配SpringBean(五)--注解装配之自动装配

    在spring ioc容器中,spring要先完成bean的定义和生成,然后需要需要注入的资源,在上一篇的扫描组件中就是这样实现的.而自动装配中我们只需要定义和生成一个bean,发现bean的过程将由 ...

  10. 装配SpringBean(四)--注解装配之组件扫描

    前两篇文章我总结了通过XML方式装配bean的实现方式,虽然比较简单,但是需要配置很多,很多时候我们都会使用注解进行装配.使用注解的方式可以减少XML的配置,既能实现XML的功能,还提供了自动装配功能 ...