Spring入门概念 以及入门案例

Spring入门案例

  • Spring
    • spring是什么
    • spring的狭义与广义
    • spring的两个核心模块
      • IoC
      • AOP
    • Spring framework特点
    • spring入门案例
      • 不用new方法,如何使用返回创建的对象
    • 容器:IoC
      • 控制反转
      • 依赖注入

Spring

spring是什么

  • spring是一款主流的Java EE轻量级开源框架

spring的狭义与广义

  • 广义上的spring泛指以Spring Framework为核心的Spring技术栈
  • 狭义上的spring特指Spring Framework,通常我们将它称为Spring框架

spring的两个核心模块

IoC

  • Inverse of Control,的简写,译为“控制反转”,指把创建对象过程交给Spring进行管理

AOP

  • Aspect Oriented Programming的简写,译为“面向切面编程”。AOP用来封装多个类的公共行为,将那些与业务无关,却为业务模块所共同调用的逻辑封装起来,减少系统的重复代码,降低模块间的耦合度,另外,AOP还解决一些系统层面上的问题,比如日志、事务、权限等

Spring framework特点

  • 非侵入式
  • 控制反转
  • 面向切面编程
  • 容器
  • 组件化
  • 一站式

spring入门案例

  1. 引入spring相关依赖
<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.14</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.6.3</version></dependency></dependency></dependencies>
  1. 创建类、定义属性和方法
public class User {public void add(){System.out.println("add.....");}
}
  1. 按照spring要求创建配置文件(xml格式)
    注意:这里的class中是你的文件路径,由于波煮是跟着B站尚硅谷学的,所以这里就是com.atguigu.spring6
<!--id属性:唯一标识class属性:要创建对象所在类的全路径(包名称+类名称)
--><bean id="user" class="com.atguigu.spring6.User"/>
  1. 在spring配置文件配置相关信息
  2. 进行最终测试

不用new方法,如何使用返回创建的对象

  1. 加载bean.xml配置文件
  2. 对xml文件进行解析操作
  3. 获取xml文件beam标签属性值(ID属性值和class属性值)
  4. 使用反射根据类全路径创建对象
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestUser {@Testpublic void testUserObject(){//加载spring配置文件,对象创建ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");//获取创建的对象User user = (User)context.getBean("user");System.out.println("1:"+user);//使用对象调用方法进行测试System.out.print("2:");user.add();}
}

容器:IoC

  • Spring通过IoC容器来管理所有Java对象的实例化和初始化,控制对象与对象之间的依赖关系
  • 我们将由IoC容器管理的Java对象称为Spring Bean,它与使用关键字new创建的Java对象没有任何区别
  • 容器放bean对象,使用map集合

控制反转

  • 控制反转是一种思想
  • 控制反转是为了降低程序耦合度,提高程序扩展力
  • 控制反转,反转的是什么?
    • 将对象的创建权利交出去,交给第三方容器负责
    • 将对象和对象之间关系的维护权交出去,交给第三方容器负责
  • 控制反转这种思想如何实现呢?
    • DI(dependency injection):依赖注入

依赖注入

  • DI(Dependency injection):依赖注入,依赖注入实现了控制反转的思想
  • 定义:指Spring创建对象的过程中,将对象依赖属性通过配置进行注入
  • 依赖注入常见的实现方式包括两种:
    • set注入
    • 构造注入
  • 结论:IOC是一种控制反转的思想,而DI是对IOC的一种具体实现
  • Bean管理说的是:Bean对象的创建,以及Bean对象中属性的赋值(或者叫做Bean对象之间关系的维护)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/900759.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

The packaging for this project did not assign a file to the build artifact

问题&#xff1a; maven install报错&#xff1a;The packaging for this project did not assign a file to the build artifact 解决方案&#xff1a; 方案1&#xff1a; 使用mvn clean install 就可以解决问题&#xff0c; 方案2&#xff1a; 找到lifecycle点clean再点…

C++入门一:C++ 编程概述

一、C 语言与 C 的关系&#xff1a;从 “带类的 C” 到独立王国 1.1 血缘关系&#xff1a;C 是 C 的 “超级进化版” 起源&#xff1a;C 由 Bjarne Stroustrup 在 1980 年代开发&#xff0c;最初名为 “C with Classes”&#xff08;带类的 C&#xff09;&#xff0c;旨在为 …

LLM生成文本的 束搜索参数是什么(Beam Search)

LLM生成文本的 束搜索参数是什么(Beam Search) 束搜索(Beam Search)是一种在序列生成任务(如机器翻译、文本生成等)中常用的启发式搜索算法,用于在搜索空间中寻找最优的生成序列。 束搜索的基本概念 在序列生成过程中,每一步都会有多个可能的选择(即候选标记)。 …

Java-多级排序结合thenComparing()

List<User>,user有个字段有值的时候设置1,没值就是null,怎么排序根据这个字段排序? 若要对 List<User> 按照某个字段(如 flag,有值时为 1,无值时为 null)排序,可 以使用 ​​Comparator​​ 结合 null 值处理逻辑。 1. 排序规则说明​​ 假设需求是:…

卷积神经网络(CNN)基础

目录 一、应用场景 二、卷积神经网络的结构 1. 输入层&#xff08;Input Layer&#xff09; 2. 卷积层&#xff08;Convolutional Layer&#xff09; 3. 池化层&#xff08;Pooling Layer&#xff09; 最大池化&#xff08;max_pooling&#xff09;或平均池化&#xff08;…

Android 中集成 Unity 工程的步骤

在 Adroid 项目中集成 Unity 工程,主要步骤如下: 一、前提条件 1、已有一个 Android 工程项目; 2、Unity 工程已导出为 Android 工程,目录大概如下: 二、集成步骤 1、在 Android 工程中导入 Unity 工程的 unityLibrary 模块。 在 Android Studio 中,点击菜单栏 Fil…

热Key问题及其解决方案:Redis高并发场景下的性能优化

目录 一、热Key问题的本质与影响 1.1 什么是热Key&#xff1f; 典型热Key场景&#xff1a; 1.2 热Key造成的技术挑战与业务影响 技术层面影响&#xff1a; 业务层面影响&#xff1a; 二、热Key的科学判定与识别方法 2.1 定量判定标准 QPS集中度指标 资源消耗指标 2.…

2025年智能 ITSM产品推荐

2025年数字经济占GDP比重将突破62%&#xff0c;IT服务管理&#xff08;ITSM&#xff09;系统已成为企业核心竞争力的"数字底座"。根据IDC最新报告&#xff0c;采用AI驱动的智能ITSM系统可使企业运营效率提升41%&#xff0c;故障恢复成本降低58%。本文从智能化水平、产…

动手人形机器人(RL)

1 PPO的讲解 核心步骤&#xff0c;如策略网络和价值网络的定义、优势估计、策略更新、价值更新等基础功能的实现 2 代码构成 可能涉及 初始化&#xff0c;Behavior Clone 3 动手强化学习 import pytorch as torch class actorcritic ##等待补充 4 PD Gains 在机器人学中&…

Mujoco xml模型

Mujoco xml模型 一个例子compileroptionassetmesh default基本使用childclass与class多个class worldbodybody关系inertialjointgeom XML主要分为以下三个部分&#xff1a; < asset> &#xff1a; 用 tag导入STL文件&#xff1b;< worldbody>&#xff1a;用tag定义…

【Redis】背景知识

一、Redis的特性 Redis是一种基于键值对&#xff08;key-value&#xff09;的NoSQL数据库&#xff0c;与很多键值对数据库不同的是&#xff0c;Redis中的值可以是由string&#xff08;字符串&#xff09;&#xff0c;hash&#xff08;哈希&#xff09;&#xff0c;list&#xf…

Redis的used_memory_peak_perc和used_memory_dataset_perc超过90%会怎么样

当Redis的used_memory_peak_perc&#xff08;当前内存占历史峰值的百分比&#xff09;和used_memory_dataset_perc&#xff08;数据集内存占比&#xff09;均超过90%时&#xff0c;可能引发以下问题及风险&#xff1a; 一、used_memory_peak_perc > 90% 的影响 内存交换风险…

嵌入式---灰度传感器

灰度传感器概览 一、定义与核心功能 1. 定义 灰度传感器是一种基于 光反射原理 的光电传感器&#xff0c;通过检测物体表面对入射光&#xff08;多为红外光或可见光&#xff09;的反射强度&#xff0c;将光信号转换为电信号&#xff0c;从而判断目标物体的 灰度值&#xff0…

0303hooks-react-仿低代码平台项目

文章目录 1. 副作用2.其他内置hooks2.1 useEffect2.2 useRef2.3useMemo2.4 useCallback 3.自定义hooks4. 第三方hooks5. hooks使用原则6. hooks闭包陷阱7. 总结结语 1. 副作用 当组件渲染完成时&#xff0c;加载一个Ajax网络请求当某个state更新时&#xff0c;加载一个Ajax网络…

Zephyr、FreeRTOS、RT-Thread 定时器区别分析

一、核心特性对比 特性ZephyrFreeRTOSRT-Thread定时器类型系统定时器&#xff08;k_timer&#xff09;、硬件定时器软件定时器&#xff08;基于系统tick&#xff09;软件定时器、硬件定时器定时模式单次、周期性单次、自动重载&#xff08;周期性&#xff09;单次、周期、自定…

手撕unique_ptr 和 shareed_ptr

文章目录 unique_ptrshared_ptr unique_ptr template<class T> class Unique_ptr { private:T* ptrNULL; public://1、删除默认的拷贝构造函数Unique_ptr(Unique_ptr& u) delete;//2、删除默认的复制构造Unique_ptr& operator(Unique_ptr& u) delete; …

对比 HashMap 和 ConcurrentHashMap 扩容逻辑的差异

HashMap 和 ConcurrentHashMap 在 扩容逻辑 上有明显的差异&#xff0c;尤其是在并发环境下的处理策略&#xff0c;这是它们核心区别之一。 &#x1f9f1; 一、总体对比表&#xff08;JDK 8 为例&#xff09; 特性HashMapConcurrentHashMap线程安全❌ 否✅ 是是否支持并发扩容…

Linux 的准备工作

1.root用户登录 首先讲一下root账户怎么登陆 直接 ssh root 公ip地址就可以了 比如我的是腾讯云的 这个就是公ip 下面所有普通用户的操作都是在root账户下进行的 2.普通用户创建 创建用户指令 adduser 用户名 比如说这个指令 我创建了一个ly_centos的普通用户 3.普通用…

自动变为 VIP 文章

今天突然发现自己写的大部分文章都被自动设为了VIP文章。 我这才想起来以前好像填过一个什么表&#xff0c;说要允许CS-DN把自己写的文章自动设为VIP文章。 我也忘了为啥要允许CSDN动我写的文章了&#xff0c;把几乎所有文章都给设为VIP显然是不合适的&#xff0c;毕竟文章是给…

Vue3+Vite+TypeScript+Element Plus开发-08.登录设计

系列文档目录 Vue3ViteTypeScript安装 Element Plus安装与配置 主页设计与router配置 静态菜单设计 Pinia引入 Header响应式菜单缩展 Mockjs引用与Axios封装 登录设计 登录成功跳转主页 多用户动态加载菜单 文章目录 目录 系列文档目录 文章目录 前言 一、登录mo…