<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 容器,利用依赖关系注入的方式,实现对象之间的解耦。


目录
相关文章
|
3天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
14 2
|
15天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
23天前
|
前端开发 Java 数据库连接
Spring 框架:Java 开发者的春天
Spring 框架是一个功能强大的开源框架,主要用于简化 Java 企业级应用的开发,由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立,并由Pivotal团队维护。
42 1
Spring 框架:Java 开发者的春天
|
23天前
|
Java 数据库连接 开发者
Spring 框架:Java 开发者的春天
【10月更文挑战第27天】Spring 框架由 Rod Johnson 在 2002 年创建,旨在解决 Java 企业级开发中的复杂性问题。它通过控制反转(IOC)和面向切面的编程(AOP)等核心机制,提供了轻量级的容器和丰富的功能,支持 Web 开发、数据访问等领域,显著提高了开发效率和应用的可维护性。Spring 拥有强大的社区支持和丰富的生态系统,是 Java 开发不可或缺的工具。
|
23天前
|
JSON Java Maven
实现Java Spring Boot FCM推送教程
本指南介绍了如何在Spring Boot项目中集成Firebase云消息服务(FCM),包括创建项目、添加依赖、配置服务账户密钥、编写推送服务类以及发送消息等步骤,帮助开发者快速实现推送通知功能。
61 2
|
27天前
|
存储 人工智能 Java
将 Spring AI 与 LLM 结合使用以生成 Java 测试
AIDocumentLibraryChat 项目通过 GitHub URL 为指定的 Java 类生成测试代码,支持 granite-code 和 deepseek-coder-v2 模型。项目包括控制器、服务和配置,能处理源代码解析、依赖加载及测试代码生成,旨在评估 LLM 对开发测试的支持能力。
34 1
|
29天前
|
Java BI 调度
Java Spring的定时任务的配置和使用
遵循上述步骤,你就可以在Spring应用中轻松地配置和使用定时任务,满足各种定时处理需求。
123 1
|
9天前
|
安全 Java 测试技术
Java开发必读,谈谈对Spring IOC与AOP的理解
Spring的IOC和AOP机制通过依赖注入和横切关注点的分离,大大提高了代码的模块化和可维护性。IOC使得对象的创建和管理变得灵活可控,降低了对象之间的耦合度;AOP则通过动态代理机制实现了横切关注点的集中管理,减少了重复代码。理解和掌握这两个核心概念,是高效使用Spring框架的关键。希望本文对你深入理解Spring的IOC和AOP有所帮助。
21 0
|
1月前
|
Java Apache Maven
Java/Spring项目的包开头为什么是com?
本文介绍了 Maven 项目的初始结构,并详细解释了 Java 包命名惯例中的域名反转规则。通过域名反转(如 `com.example`),可以确保包名的唯一性,避免命名冲突,提高代码的可读性和逻辑分层。文章还讨论了域名反转的好处,包括避免命名冲突、全球唯一性、提高代码可读性和逻辑分层。最后,作者提出了一个关于包名的问题,引发读者思考。
Java/Spring项目的包开头为什么是com?
|
1月前
|
分布式计算 监控 Java
Java中Spring基础知识理解
Java中Spring基础知识理解
16 0