1.IocDI和Spring
1.面向对象回顾和案例
面向对象程序设计:1 2 3 4
案例分析:
需求分析:
报表功能:
报表服务类,检索数据,并生成图标
报表生成器类,生成不同格式的报表文件,例如PDF格式、Html格式等
实现一:以面向对象的方式实现Demo
实现二:分离接口和实现
优化目标:消除ReportService到ReportGenerator实现类之间的依赖关系
实现三:
采用容器:
增加容器类:Container类
所有组件由Container类管理
分析:
ReportService与ReportGenerator的具体实现解耦了
选择不同的Generator不需要修改Service
缺点:
Container对所管理的所有组件产生了依赖
ReportService对Container依赖,因为其封装有查找逻辑,所以在重用之前还要修改
目标:
去掉ReportService对Container依赖
实现四:
使用服务定位器:
服务定位器:ServiceLocator类
封装查找逻辑
对外公开查找组件(Generator)的方法
优点:
应用服务定位器将查找逻辑从组件里分离出来
降低组件在查找方面的复杂性
增加组件的重用性
这是用于查找资源的通用设计模式,并不局限于查找组件
JavaEE中的应用,如:JNDI(Java命名和目录接口)
局限
组件需要知道如何查找资源
2.IIoC和DI
概念:
IoC(Inversion of Control,控制反转):
设计原则,解耦组件之间的依赖关系
DI( DI(Dependency Injection ,依赖注入):
具体的设计模式,体现了IoC的设计原则
因为DI是IoC最典型的实现,所以术语IoC与DI经常被混用
应用IoC:
应用IoC:
好的获取资源的解决方案
由容器主动将资源推送到它所管理的组件里,组件要有接受资源的方式
查找的被动形式
实现五:
不需要服务定位器
组件(ReportService)增加接受资源的方法(setter)
由容器将组件(ReportGenerator)注入到另一个组件(ReportService)
优点
完全面向接口
不同类型的依赖注入:
主要有三种类型的DI
接口注入(Type1 IoC)
setter注入(Type2 IoC)
构造器注入(Type3 IoC)
流行程度最广的:setter注入
有可能忘记注入,会抛出空指针
代码安全有可能存在问题,依赖会被修改
构造器注入
可避免setter注入的一些缺点
没有含义明确的方法名,对参数位置与数量有要求
3.Spring框架简介
4.Spring框架实现IoC
Spring提供了IoC容器
Beans均由Spring IoC容器
来管理和组装
Spring实例编码步骤:
导入Spring相关Jar文件
配置元数据
编码实现功能,组件间用容器进行注入
Spring示例:
Bean是一个由Spring IoC容器进行实例化、装配和管理的对象
Beans以及他们之间的依赖关系是通过容器使用配置元数据反应出来
配置元数据:
基于Xml的配置
基于注解的配置
基于Java的配置
转载于:https://www.cnblogs.com/Firesun/p/9881768.html
1.IocDI和Spring相关推荐
- Spring框架学习笔记(2)——IOCDI
IOC:控制反转,创建对象的权利交给Spring,Spring会自动创建对象. DI:依赖注入,操作的对象靠Spring注入,如果不使用Spring,对象的属性值是要靠setter方法来添加的,使用S ...
- spring项目概念-IOCDI
IOC和DI,IOC和DI这两个概念,这两个概念其实特别的简单,可以说打我们学JAVA以来,最简单的思想了,IOC这三个字母,全写是Inverse Of Control,翻译过来就是,反转控制,IOC ...
- Spring框架(IOCDI)xXML形式和注解形式
IOC Spring的依赖包 pom.xml <dependency><groupId>org.springframework</groupId><artif ...
- 【Spring IOCDI】知识点详细介绍
文章目录 Spring 简介 Spring Framework 系统架构 IOC & DI 简介 通过IOC容器创建对象,并为属性赋值 根据bean的类型从IOC容器中获取bean的实例 通过 ...
- Spring入门图解(体系结构-IOC-DI-AOP)
0. 什么是Spring? 一句话:Spring是一个轻量级的控制反转(IoC-Inversion of Control)和面向切面(AOP-Aspect Oriented Programming)的 ...
- spring中AOP(面向切面编程)
spring中AOP(面向切面编程) 面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一个热点,也是spring框架中的一个重要内容 ...
- spring boot项目 中止运行 最常用的几种方法
spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...
- html+spring boot简单的ajax数据传输实现
本篇讲解在前后端不分离情况下的html+spring boot的项目数据传输实现 首先,后台我写了三个接口 package com.demo.ajax.controller;import com.de ...
- Spring Boot整合Spring Data JPA操作数据
一. Sping Data JPA 简介 Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套 JPA 应用框架,底层使用了 Hibernate 的 J ...
最新文章
- 【100题】第十五题(树的镜像问题)
- 奥巴马访华:不建议过度审查 提倡加强互联网开放
- [ASP.NET Core 2.0 前方速报].NET Core 2.0.3 已经支持引用第三方程序集了
- [bzoj3527][Zjoi2014]力
- java聚合_Java™ 教程(聚合归纳操作)
- abp调用登录接口获取token再调用其他接口
- git submodule详解
- Android 友盟分享(截图指定的View分享)
- Java IO流知识点总结
- Java 技巧篇-IntelliJ IDEA快捷键设置,格式化代码快捷键
- java语言中modifiers_Java基础——Modifier类
- 【xlwings api语言参考】Worksheet.Cells 属性
- wps怎么画网络图_wps 流程图怎么画 WPS流程图绘制图解教程
- pc端客户端爬虫_爬虫微博模拟登陆-从移动端到PC端
- 会议室录播方案及录播设备推荐
- 前后端离线开发相关软件下载地址大全
- Anonympy——使用Python进行数据匿名化
- Win10命令大全通用
- 企业为什么需要做APP安全评估?
- 机器学习 python
热门文章
- 单片机与微处理器和微型计算机的关系,微处理器、CPU、微处理机、微机、单片机它们之间有何区别?...
- 打不开_网页打不开,怎解?
- 如何重装计算机操作系统,自己如何重装笔记本电脑操作系统呢?
- 递归下降文法C语言实验报告,递归下降语法分析器实验报告.doc
- Awcing算法--二进制
- labview简易计算机实验报告,labview实验报告..doc
- PostgreSql、MySql字段值为空时取其他值语句
- csdn获取自己所有博客的地址,包含分页
- C语言:随笔10--共用体
- 【目标检测】(6) YOLOV2 目标检测在V1基础上的改进