Spring的控制反转和依赖注入

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其他模块的支持  

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户2442861的专栏

recv函数说明返回值

客户端的程序连接上服务器后recv函数阻塞接受,有时会返回0,说明接收超时服务器主动断开了连接,需要重新connect服务器,但重新connect时会报“Tr...

441
来自专栏Java Edge

Spring Data JPA踩坑记:与Bootstrap Table的分页协作@PersistenceContext和@Resource的区别

注入一堆保存实体类状态的数据结构,针对实体类的不同状态(四种,managedh或detached等)可以做出不同的反应(merge,persist等等),其实就...

881
来自专栏Java帮帮-微信公众号-技术文章全总结

Java面试系列26-spring(5)-资源管理、与struts区别、核心等

Java面试系列26-spring(5)-资源管理、与struts区别、核心等 25.Spring如何实现资源管理? 使用applicationContext....

3145
来自专栏JetpropelledSnake

Python Web学习笔记之TCP的3次握手与4次挥手过程

前言 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。TCP提供一种面向连接的、可靠的字节流服务。 面向连接意味...

28610
来自专栏即时通讯技术

理论经典:TCP协议的3次握手与4次挥手过程详解

尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。TCP提供一种面向连接的、可靠的字节流服务。

712
来自专栏ccylovehs

JDK动态代理与CGLib动态代理

JDK1.3以后java提供了动态代理技术,允许开发者在运行期创建接口的代理实例,动态代理是实现AOP的绝好底层技术。

581
来自专栏老码农专栏

ActFramework - 控制器单例还是多例

773
来自专栏osc同步分享

SpringBoot JMS(ActiveMQ) 使用实践

ActiveMQ 1. 下载windows办的activeMQ后,在以下目录可以启动: ? 2. 启动后会有以下提示 ? 3. 所以我们可以通过http://l...

3177
来自专栏magicsoar

网络IO超时的几种实现

一、select/poll/epoll int select(int maxfdp1, fd_set *readset, fd_set *writeset, f...

2965
来自专栏Java工程师日常干货

分析动态代理给Spring事务埋下的坑前言从动态代理到Spring事务

Spring的声明式事务让我们不在编写获得连接、关闭连接、开启事务、提交事务、回滚事务等代码,通过一个简单的@Transactional注解,就让我们轻松进行事...

743

扫码关注云+社区