Spring的官网:https://spring.io/

Struts与Hibernate可以做什么事?

  Struts,

    Mvc中控制层解决方案

    可以进行请求数据自动封装、类型转换、文件上传、效验…

Hibernate,

  持久层的解决方案;

  可以做到,

  把对象保存到数据库,

  从数据库中取出的是对象。

传统的开发模式

  基于mvc模式进行项目开发;

  基于mvc的项目框架结构:

  Entity / dao / service / action

为什么引入Spring:

思考:

1. 对象创建创建能否写死?

2. 对象创建细节

对象数量

action  多个   【维护成员变量】

service 一个   【不需要维护公共变量】

dao     一个   【不需要维护公共变量】

创建时间

action    访问时候创建

service   启动时候创建

dao       启动时候创建

3. 对象的依赖关系

action 依赖 service

service依赖 dao

=======================================================

总结:

spring就是解决上面的问题的!

简单来说,就是处理对象的创建的、以及对象的依赖关系!

1:框架设计:

  1.1:侵入式设计:引入了框架,对现有的类的结构有影响,即需要实现或者继承某些特定类

      例如:Struts2框架

  1.2:非侵入式设计:引入了框架,对现有的类结构没有影响

      例如:Hibernate框架,Spring框架


2:Spring框架

  Spring概述:可以解决对象创建以及对象之间依赖关系的一种框架。且可以很好的和其他框架一起使用,

     如Spring和Hibernate,Spring和Struts2,其实通俗点讲Spring就是起到一种整合的作用,

     如是一座桥梁,连接了Hibernate和Struts2;

  2.1:控制反转(Inversion of Confrol):

      对象的创建交给外部容器完成,这个就叫做控制反转

  2.2:依赖注入(dependency injection):

     处理对象的依赖关系

  2.3:控制反转和依赖注入的区别:

     控制反转:解决对象创建的问题[对象创建交给别人即ioc容器]; 

     依赖注入:在创建完对象后,对象的关系的处理就是依赖注入[通过set方法依赖注入];

  2.4:AOP面向切面编程
    面向切面编程:切面,简单的说来可以理解为一个类,由很多重复代码形成的类。
    例如:事务,日志,权限。


3:Spring提供了一站式解决方案:

  3.1:SpringCore:

      Spring的核心功能,IoC容器,解决对象创建以及依赖关系

  3.2:SpringWeb:

     Spring对web模块的支持:

        (1)可以与struts2整合,让struts2的action的创建交给Spring

          (2)Spring mvc模式 

  3.3:SpringDao:

      Spring对jdbc操作的支持[JdbcTemplate模板工具类]

   3.4:SpringORM:

     Spring对orm的支持:

      (1):既可以与Hibernate整合

      (2):也可以使用Spring对Hibernate操作的封装

  3.5:SpringAOP:

      面向切面编程

  3.6:SpringEE:

    Spring对JavaEE其他模块的支持  


框架啊,东西多而杂,耐着性子慢慢消化~~~

Spring的控制反转和依赖注入的更多相关文章

  1. 简单了解Spring的控制反转和依赖注入

    浅谈控制反转(Inversion of Control,IOC) 我们首先先来了解一下控制二字,也就是在控制"正"转的情况下,在任何一个有请求作用的系统当中,至少需要有两个类互相配 ...

  2. Spring理论基础-控制反转和依赖注入

    第一次了解到控制反转(Inversion of Control)这个概念,是在学习Spring框架的时候.IOC和AOP作为Spring的两大特征,自然是要去好好学学的.而依赖注入(Dependenc ...

  3. spring(3)------控制反转(IOC)/依赖注入(DI)

    一.spring核心概念理解 控制反转: 控制反转即IoC (Inversion of Control).它把传统上由程序代码直接操控的对象的调用权交给容器.通过容器来实现对象组件的装配和管理. 所谓 ...

  4. Spring、控制反转与依赖注入(概念)

    Spring 一个开源的控制反转(Inversion of Control ,Ioc)和面向切面(AOP)的容器框架. 主要目的:简化开发 控制反转(Inversion of Control ,Ioc ...

  5. 如何通俗的理解spring的控制反转、依赖注入、面向切面编程等等

    之前一直不理解spring的一些基础特性是什么意思,虽然网上的解释也很多,但是由于我比较笨,就是看不懂,知道最近才稍微了解,下面就以通俗讲解的方式记录下来. 前言 假设我是一个没有开店经验的小老板,准 ...

  6. 【SSH】——spring的控制反转和依赖注入

    spring是一个轻量级的容器框架,主要是为了使企业的开发变得简单.高效.无论是从大小还是开销来讲,他都可以算是轻量级的,也是非侵入性的. 下图是spring的框架示意图,说到spring,就不得不提 ...

  7. Spring 之 控制反转(IoC), 依赖注入(DI)和面向切面(AOP)

    关于依赖注入, 这篇博文写的非常简单易懂. https://github.com/android-cn/blog/tree/master/java/dependency-injection 此外, 博 ...

  8. Spring 1 控制反转、依赖注入

    1.1 Spring的核心是控制反转(IoC)和面向切面(AOP) 学习spring之前的开发中通过new创建一个对象,有了spring之后,spring创建对象实例-IoC控制反转,之后需要实例对象 ...

  9. spring IOC --- 控制反转(依赖注入)----简单的实例

    IoC(Inversion of Control)控制反转,对象创建责任的反转,在spring中BeanFacotory是IoC容器的核心接口,负责实例化,定位,配置应用程序中的对象及建立这些对象间的 ...

随机推荐

  1. Ubuntu 下 Tomcat7 的安装和配置

    tomcat下载地址:http://tomcat.apache.org/download-70.cgi 声明:下面的内容和原创笔者的博文的内容差不多,不一样的只是tomcat7的安装目录不同,我按照我 ...

  2. POJ 2127 Greatest Common Increasing Subsequence

    You are given two sequences of integer numbers. Write a program to determine their common increasing ...

  3. Centos7更改yum镜像源

    1. 备份本地yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak 2.获取阿里yum源配置文 ...

  4. Jena搭建SPARQL查询RDF数据

    1 Jena搭建SPARQL查询RDF数据 1.1 Jena概要 · SPARQL是W3C的RDF数据工作组设计的一种查询语言和协议,用于RDF数据的查询.经过类似于JDK安装时候的配置,可以在命令行 ...

  5. pd.qcut, pd.cut, df.groupby()等在分组和聚合方面的应用

    pd.qcut, pd.cut, df.groupby()等在分组和聚合方面的应用 量化交易里, 需要进行大量的分组和统计, 以方便自己处优势的位置/机会. 比如对股价进行趋势分析, 波动性分析, 量 ...

  6. Visual Studio Code 常用快捷键

    VsCode 快捷键有五种组合方式(科普) Ctrl + Shift + ? : 这种常规组合按钮 Ctrl + V Ctrl +V : 同时依赖一个按键的组合 Shift + V c : 先组合后单 ...

  7. MFC中添加了一个dialog,并创建了相应的类,初始化函数没有怎么办?

    1.在头文件中添加  virtual BOOL OnInitDialog();2.在对于的CPP文件中添加  BOOL CXXDlg::OnInitDialog()  {      return TR ...

  8. emacs(考场+平时)配置方案

    考场配置: ;;在配置后面会对语句逐一解释的 (global-set-key (kbd "C-z") 'undo) (global-set-key (kbd "RET&q ...

  9. 前端mock数据的几种方式

    方式 备注 本地php服务架设 直接输出json 使用在线mock服务 如easyMock.apizza.Rap1\2 , 可以远程协作  本地node服务:koa+mongodb    本地node ...

  10. C语言中#ifdef,#ifndef和#endif的作用

    现在规定一下头文件书写规范, 根据陈皓编写的跟我一起些makefile,一定要记住:头文件中应该只是声明,而定义应该放在C/C++文件中.否则如果出现有定义,比如头文件中有int a =2;如果有多个 ...