<Java EE 进阶> 1.Spring核心思想

简介: <Java EE 进阶> 1.Spring核心思想

1.Spring是什么?


用一句话概括Spring: Spring是包含了众多工具方法的 IoC 容器.

(1) 什么是IoC?

IoC 即 Inversion of Control 意思是控制反转.所谓控制反转就是控制和反转类的生命周期.

2.为什么要有Spring?


为了将程序解耦合,即降低程序之间的相关性,使代码更加便于维护,更方便.

(1)传统程序开发缺陷

当我们要创建一个汽车类

Car(汽车)→Framework(车身)→Bottom(底盘)→Tire(轮胎)    →即 依赖

说明当我们创建一个Car类时,一定需要类内创建一个Framework类.

                 创建一个Framework类时,一定需要类内创建一个Bottom类

                 创建一个Bottom类时,一定需要类内创建一个Tire


   但是,当需求越来越多样时,Tire的构造方法需要传参数,此时创建Tire的Bottom类就需要参数..

以此类推创建Car Framework类就需要参数,这样的代码耦合性太高,牵一发而动全身,不利于代码维护.

(2)如何解决传统开发缺陷----控制翻反转式程序开发

把创建子类的方式,改为注入传递的方式


同样的创建一个汽车类


Tire → Bottom → Framework → Car   →即作为参数注入传递


想要创建一个Car类,就需要Framework类作为参数传递


Framework的创建又需要Bottom类作为参数传递


Bottom的创建又需要Tire类作为参数传递


此时我们如果想要修改Tire类 只需要改Tire 因为别的类只是被注入不关心这个类是什么样子的


我们发现创建类的顺序与传统相反,这就是控制反转


这样就达到了解耦合

3.深刻理解Spring是一个IoC容器


Spring是一个IoC容器.说的是对象的创建和销毁的权利都交给Spring来管理了,它本身又具备了存储对象和获取对象的能力.

学Spring最核心的功能,就是学如何将对象存入到Spring中,再从Spring中获取对象的过程.

4.DI 概念说明


DI即Dependency Injection 意思是依赖注入.所谓依赖注入即由IoC容器在运行期间,动态地将某种关系注入到对象之中.所以,依赖注入(DI)和控制反转(IoC)是从不同的角度的描述的同一件事情,就是指通过引入 IoC 容器,利用依赖关系注入的方式,实现对象之间的解耦。


目录
相关文章
|
6天前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
6天前
|
缓存 Java 数据库
【Java面试题汇总】Spring篇(2023版)
IoC、DI、aop、事务、为什么不建议@Transactional、事务传播级别、@Autowired和@Resource注解的区别、BeanFactory和FactoryBean的区别、Bean的作用域,以及默认的作用域、Bean的生命周期、循环依赖、三级缓存、
【Java面试题汇总】Spring篇(2023版)
|
7天前
|
Java 数据库连接 API
【Java笔记+踩坑】Spring Data JPA
从常用注解、实体类和各层编写方法入手,详细介绍JPA框架在增删改查等方面的基本用法,以及填充用户名日期、分页查询等高级用法。
【Java笔记+踩坑】Spring Data JPA
|
7天前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
19天前
|
Java 前端开发 Apache
Apache Wicket与Spring MVC等Java Web框架大PK,究竟谁才是你的最佳拍档?点击揭秘!
【8月更文挑战第31天】在Java Web开发领域,众多框架各具特色。Apache Wicket以组件化开发和易用性脱颖而出,提高了代码的可维护性和可读性。相比之下,Spring MVC拥有强大的生态系统,但学习曲线较陡;JSF与Java EE紧密集成,但在性能和灵活性上略逊一筹;Struts2虽成熟,但在RESTful API支持上不足。选择框架时还需考虑社区支持和文档完善程度。希望本文能帮助开发者找到最适合自己的框架。
27 0
|
19天前
|
Java Spring 开发者
Java Web开发新潮流:Vaadin与Spring Boot强强联手,打造高效便捷的应用体验!
【8月更文挑战第31天】《Vaadin与Spring Boot集成:最佳实践指南》介绍了如何结合Vaadin和Spring Boot的优势进行高效Java Web开发。文章首先概述了集成的基本步骤,包括引入依赖和配置自动功能,然后通过示例展示了如何创建和使用Vaadin组件。相较于传统框架,这种集成方式简化了配置、提升了开发效率并便于部署。尽管可能存在性能和学习曲线方面的挑战,但合理的框架组合能显著提升应用开发的质量和速度。
27 0
|
22天前
|
安全 Java 开发者
Java反射:Spring Boot背后的魔法,让你的代码质量飞跃的神秘力量!
【8月更文挑战第29天】Java反射机制允许程序在运行时访问和修改类、接口、方法等属性,而Spring Boot则广泛应用反射实现依赖注入和自动配置。本文探讨如何利用反射机制提升Spring Boot应用的代码质量,包括动态类型处理、元数据访问及依赖注入等方面。通过实战示例展示动态调用方法和自定义注解处理,强调反射机制对代码灵活性与扩展性的贡献,同时提醒开发者注意性能和安全问题。
36 0
|
26天前
|
Java 开发工具 Spring
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
|
26天前
|
前端开发 JavaScript Java
【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包
【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包
|
26天前
|
Java Linux C++
【Azure 应用服务】App Service For Linux 部署Java Spring Boot应用后,查看日志文件时的疑惑
【Azure 应用服务】App Service For Linux 部署Java Spring Boot应用后,查看日志文件时的疑惑