spring01-介绍和IoC/DI思想

丑陋的代码

  1. 代码耦合度高,不符合开闭原则
  2. 控制事务繁琐,大量的重复代码分散不同类的不同方法中,不利于维护。
  3. 第三方框架运用太麻烦,对使用者而言最关心的是获取到这个对象使用,而不关心这个对象创建。

Spring介绍

Spring定义

源于 Rod Johnson 在其著作 《Expert one on one J2EE design and development》 中阐述的部分理念和原型衍生而来。

Spring 是一个轻量级的 IoC / DI和 AOP 容器的开源框架,致力于构建致力于构建轻量级的 JavaEE 应用,简化应用开发,本身涵盖了传统应用开发,还拓展到移动端,大数据等领域。

什么是容器(Container):从程序设计角度看就是装对象的的对象,因为存在放入、拿出等操作,所以容器还要管理对象的生命周期,如 Tomcat 就是 Servlet 的容器。

Spring在JavaEE开发中作用

Spring 提供了 JavaEE 每一层的解决方案(full stack)。Web 开发中的最佳实践:根据职责的纵向划分:控制层、业务层、持久层:不同框架解决不同领域的问题。

Spring优势

Spring 除了不能帮我们写业务逻辑,其余的几乎什么都能帮助我们简化开发。

Spring FrameWork体系

在这里插入图片描述

Core Container(核心容器 IoC)包含有 Beans、Core、Context 和 SpEL 模块。

Test 模块支持使用 JUnit 和 TestNG 对 Spring 组件进行测试。

AOP 模块提供了一个符合 AOP 联盟标准的面向切面编程的实现。

Data Access / Integration 层包含有 JDBC、ORM、OXM、JMS 和 Transaction 模块。

Web 层包含了 Web、Web-Servlet、WebSocket、Web-Porlet 模块。

Spring依赖

我们使用 5.0.8.RELEASE 的版本

IoC和DI思想

IoC

IoC:Inversion of Control(控制反转):读作“反转控制”,更好理解,不是什么技术,而是一种设计思想,好比于 MVC。

就是将原本在程序中手动创建对象的控制权,交由 IoC 容器来管理。

调用者只管负责从IoC 容器中获取需要使用的对象,不关心对象的创建过程,也不关心该对象依赖对象的创建以及依赖关系的组装,也就是把创建对象的控制权反转给了IoC容器。

DI

DI:Dependency Injection:依赖注入。

从字面上分析:IoC:指将对象的创建权,反转给了IoC 容器;DI :指IoC容器创建对象的过程中,将对象依赖属性(常量,对象)通过配置设值给该对象。

IoC 从字面意思上很难体现出谁来维护对象之间的关系,Martin Fowler 提出一个新的概念 DI,更明确描述了“被注入对象(Service 对象)依赖 IoC 容器来配置依赖对象”。

使用 Spring IoC DI

添加依赖

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context</artifactId>
	<version>5.0.8.RELEASE</version>
</dependency>

编写Spring 的配置文件

<!-- 
   配置数据库连接池对象才配置初始化与销毁化方法
   若发现类名是以FactoryBean 结尾,注意创建对象类型
   属性名必须对应是 setter 方法
   -->
<bean id="唯一性" class="类全限定名" [init-method="初始方法" destroy-method="销毁方法"] > 
    <property name="属性名" value="属性值" | ref="容器中另外一个bean的 id 值">
    ........
</bean>

加载配置启动容器

使用 Spring API 启动容器

ApplicationContext及bean

BeanFactory:Spring 最底层的接口,只提供了的 IoC 功能,负责创建、组装、管理 bean,在应用中,一般不使用 BeanFactory,而推荐使用 ApplicationContext(应用上下文)。

ApplicationContext:继承了BeanFactory,除此之外还提供 AOP 集成、国际化处理、事件传播、统一资源加载等功能。

在这里插入图片描述

被Spring IoC容器管理的对象称之为 bean。

使用 Spring 测试启动容器

@RunWith(SpringJUnit4ClassRunner.class) // 但测试方法之前启动容器
@ContextConfiguration("classpath:Spring配置文件")// 指定加载的配置文件
@Autowired // 贴字段上,字段类型就是从容器中获取的对象的类型

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小云很优秀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值