Spring环境搭建、SpringIOC容器基础、SpringDI基础

文章目录

  • Spring环境搭建、SpringIOC容器基础、SpringDI基础
    • 一、SpringIOC核心思想
    • 二、搭建Spring环境步骤
    • 三、SpringIOC容器使用步骤
    • 四、SpringIOC 总结
    • 五、SpringDI(依赖注入)
    • 1、基本概念
      • 2、实现方式
        • (1)set 注入
        • (2)构造注入
        • (3)属性注入
      • 3、允许注入的数据类型
      • 4、注入的实现方式

Spring环境搭建、SpringIOC容器基础、SpringDI基础

一、SpringIOC核心思想

  • IOC控制反转
  • DI依赖注入

作用:将所有JavaBean注入Spring容器中,进行==”解耦“==管理,在Spring中,万物皆为JavaBean

二、搭建Spring环境步骤

  1. 使用maven,在pom.xml文件中添加Spring坐标,即添加Spring依赖
  2. 在resource文件中新建配置文件,即Spring框架的主配置文件
  3. Spring的主配置文件就相当于 SpringIOC 容器 ,其中管理这所有的 JavaBean

三、SpringIOC容器使用步骤

  1. 创建 JavaBean ,即类或其他数据
  2. 将类注入SpringIOC容器,即将创建的 JavaBean 设置到IOC容器中
// 配置语法:<bean id="唯一标识" class="类的完全限定名称,就是需要将哪个类加到IOC容器中"></bean>

3、加载 Spring 主配置文件(SpringIOC容器)获取核心对象

 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");ApplicationContext applicationContext = new FileSystemXmlApplicationContext()ApplicationContext applicationContext = new AnnotationConfigApplicationContext()

说明:

关键字:
BeanFactory(父接口)

ApplicationContext(子接口)

  • ClassPathXmlApplicationContext == 通过文件的相对路径获取核心对象(实现类)
  • FileSystemXmlApplicationContext == 通过文件的绝对路径获取核心对象(实现类)
  • AnnotationConfigApplicationContext == 通过加载配置类获取核心对象(实现类)

4、让 Spring 以解耦的方式实例化对象并返回用户

四、SpringIOC 总结

  • 使用 SpringIOC 的主要思想就是为了解耦合,就是管理项目组件之间的耦合关系
  • IOC 的含义就是控制反转,即将创建对象的控制权转移给 Spring框架进行管理,反转的含义就是,原本创建对象的权利应该是属于具体的类,而现在创建对象的权利交给了IOC容器

五、SpringDI(依赖注入)

1、基本概念

根本目的也是为了解耦合

就是通过依赖注入,将传递的值或对象,通过 SpringDI 注入到指定位置

2、实现方式

先思考需要使用哪种注入方式更加合适

(1)set 注入

通过 set 方法维护对象之间的依赖关系

在 bean 标签内部开始配置

  1. 配置位置:此位置

  2. 配置语法:使用****标签

  3. 配置属性:

    • name -------->属性名称 (set 方法中对应的参数名称)

    • value -------->属性值

    • ref -------->属性值的引用(也就是需要关联的哪个对象

<bean id="student" class="com.apesource.pojo.Student"><property name="stuname" value="111"></property><property name="stuage" value="12"></property><property name="stuhobby" value="money"></property>
</bean>

(2)构造注入

通过构造方法维护对象之间的依赖关系

  1. 配置位置:此位置

  2. 配置语法:<constructor-arg 属性名=“属性值”>

  3. 配置属性:

    • name-------->构造方法参数名称

    • index-------->构造方法参数下标

    • type-------->构造方法参数类型

    • value-------->属性值

    • ref-------->属性值的引用(也就是需要关联的哪个对象

<bean id="student" class="com.apesource.pojo.Student"><constructor-arg name="name" value="111"></constructor-arg><constructor-arg name="age" value="21"></constructor-arg>
</bean>

(3)属性注入

(不推荐使用)

3、允许注入的数据类型

  • 注入对象
  • 注入基本数据类型以及String
  • 注入复杂类型List Set array Map propertoes

4、注入的实现方式

  • 下面用set注入演示复杂类型的注入
<!--  =============================注入复杂类型=====================================  -->
<bean id="teacher" class="com.apesource.pojo.Teacher"><property name="mylist"><list><value>11</value><value>22</value><value>33</value></list></property><property name="myset"><set><value>444</value><value>555</value><value>666</value></set></property><property name="mymap"><map><entry key="花和尚" value="鲁智深"></entry><entry key="豹子头" value="林冲"></entry><entry key="两年半" value="蔡徐坤"></entry><entry key="玉麒麟" value="卢俊义"></entry><entry key="及时雨" value="宋江"></entry></map></property><property name="myarray"><array><value>777</value><value>888</value><value>999</value></array></property><property name="prop"><props><prop key="1+1">2</prop><prop key="2+2">4</prop><prop key="4+4">8</prop></props></property></bean>

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

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

相关文章

多客户企业选择拥有哪些功能的CRM系统?

管理海量客户信息对于每一家企业都是巨大的挑战。粗放式的管理客户资料是对资源的一种浪费&#xff0c;让很多有意向的高价值客户流失。客户比较多&#xff0c;有什么CRM系统推荐吗&#xff1f;帮助企业轻松地跟进客户&#xff0c;提高销售效率&#xff1f; 1.易于使用 首先是…

【ES6】—【必备知识】—箭头函数

一、定义函数 1. ES5 1. 普通函数预定义&#xff0c;再调用 console.log(sum(1, 2)) function sum (x, y) {return x y } console.log(sum(1, 2))2. 函数表达式 按代码顺序定义 console.log(sum(1, 2)) // sum is not a function // sum不是一个函数 var sum function (x…

Kubernetes 包管理器 Helm

什么是 Helm 每个成功的软件平台都有一个优秀的打包系统&#xff0c;比如Debian、Ubuntu 的 apt&#xff0c;RedHat、CentOS 的 yum。Helm 则是 Kubernetes上 的包管理器&#xff0c;方便我们更好的管理应用。 在没使用 helm 之前&#xff0c;向 kubernetes 部署应用&#xff0…

1.两数之和

给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回…

opencv-yolov8-目标检测

import cv2 from ultralytics import YOLO# 模型加载权重model YOLO(yolov8n.pt)# 视频路径cap cv2.VideoCapture(0)# 对视频中检测到目标画框标出来 while cap.isOpened():# Read a frame from the videosuccess, frame cap.read()if success:# Run YOLOv8 inference on th…

Temu闯关日韩受挫?跨境电商卖家如何打磨好营销链路

海外版拼多多 Temu 先后在日本和韩国上线&#xff0c;然而效果不似预期&#xff0c;日韩市场对这套“低价补贴”策略并不买账。作为一个尚未被日韩消费者熟悉的网站&#xff0c;其价格之便宜无法让消费者信任。除此之外更大的问题是&#xff0c;在日本卷不过线下零售与百元店&a…

怎么去选消息队列? Kafka vs. RabbitMQ

在上周&#xff0c;我们讨论了使用消息队列的好处。然后我们回顾了消息队列产品的发展历史。如今&#xff0c;在项目中需要使用消息队列时&#xff0c;Apache Kafka似乎是首选产品。然而&#xff0c;考虑到特定需求时&#xff0c;它并不总是最佳选择。 基于数据库的队列 让我们…

springboot引入druid解析sql

一、前言 在开发中&#xff0c;有时我们可能会需要获取SQL中的表名&#xff0c;那么因为不同的数据源类型SQL会存在部分差异&#xff0c;那么我们就可以使用alibaba 的druid包实现不同的数据源类型的sql解析。 二、引入相关maven依赖 <dependency><groupId>com.a…

R语言02-R语言中的向量

概念 在R语言中&#xff0c;向量&#xff08;Vector&#xff09;是最基本的数据结构之一&#xff0c;用于存储相同类型的多个元素。向量可以包含数值、字符、逻辑值等&#xff0c;但其中的所有元素必须具有相同的数据类型。向量可以通过c()函数创建&#xff0c;也可以通过其他…

【核磁共振成像】傅里叶重建

目录 一、傅里叶重建二、填零三、移相四、数据窗函数五、矩形视野六、多线圈数据重建七、图像变形校正八、缩放比例九、基线校准 长TR&#xff0c;长TE&#xff0c;是T2加权像&#xff1b; 短TR&#xff0c;短TE&#xff0c;是T1加权像&#xff1b; 长TR&#xff0c;短TE&#…

从零开始学习 Java:简单易懂的入门指南之爬虫(十六)

爬虫 1.1 本地数据爬取1.2 网络数据爬取1.3 爬取数据练习1.4 按要求爬取1.5 贪婪爬取和非贪婪爬取1.6 String的split方法中使用正则表达式1.7 String类的replaceAll方法中使用正则表达式1.8 正则表达式-分组括号( )1.9 分组练习1.10 忽略大小写的写法1.11 非捕获分组1.12 正则表…

Debootstrap 教程

文章目录 Debootstrap 教程安装 debootstrap使用 debootstrap运行 debootstrap进入新的系统结束语 Debootstrap 教程 debootstrap 是一个用于在 Debian-based 系统上创建一个基本的 Debian 系统的工具。它可以用于创建 chroot 环境、容器或者为新的系统安装做准备。 安装 deb…

Mongodb Ubuntu安装

Mongodb Ubuntu安装 1.更新软件源导入MongoDB的GPG密钥 sudo apt update sudo apt install -y dirmngr wget gnupg apt-transport-https ca-certificates software-properties-common gnupgwget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add…

oracle警告日志\跟踪日志磁盘空间清理

oracle警告日志\跟踪日志磁盘空间清理 问题现象&#xff1a; 通过查看排查到alert和tarce占用大量磁盘空间 警告日志 /u01/app/oracle/diag/rdbms/orcl/orcl/alert 跟踪日志 /u01/app/oracle/diag/rdbms/orcl/orcl/trace 解决方案&#xff1a; 用adrci清除日志 确定目…

模板编程——类模板

模板概述 模板的意义是可以对类型进行参数化 相关关键字&#xff1a;template、typename、class template用于定义模板&#xff0c;typename或class用于定义模板类型参数

item_search_img-按图搜索淘宝商品(拍立淘)

一、接口参数说明&#xff1a; item_search_img-按图搜索淘宝商品&#xff08;拍立淘&#xff09;&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_search_img 名称类型必须描…

OpenAI推出GPT-3.5Turbo微调功能并更新API;Midjourney更新局部绘制功能

&#x1f989; AI新闻 &#x1f680; OpenAI推出GPT-3.5Turbo微调功能并更新API&#xff0c;将提供GPT-4微调功能 摘要&#xff1a;OpenAI宣布推出GPT-3.5Turbo微调功能&#xff0c;并更新API&#xff0c;使企业和开发者能够定制ChatGPT&#xff0c;达到或超过GPT-4的能力。通…

Ribbon 源码分析

Ribbon 源码分析 Ribbon Debug 分析 断点 LoadBalancerInterceptor LoadBalancerInterceptor 实现了 ClientHttpRequestInterceptor 接口&#xff0c;重写了其中的 intercept 方法&#xff0c;用来拦截请求&#xff1b; 获取原始的 uri 和 服务名&#xff0c;调用 LoadBalanc…

Docker Compose

一、Docker-Compose使用场景二、Docker-Compose简介三、Docker-Compose 部署四、YAML 文件格式及编写注意事项五、Docker-Compose配置常用字段六、Docker-Compose 常用命令七、Docker-Compose 文件结构八、Docker-Compose 撰写nginx8.1 准备依赖文件8.2 编写配置文件docker-com…

基于串口透传模块,单片机无线串口空中下载测试

基于串口透传模块&#xff0c;单片机无线串口空中下载测试 ✨无线串口下载&#xff0c;其本质还是串口下载方式&#xff0c;只不过省去了单片机和ISP上位机工具之间的物理有线连接&#xff0c;中间的数据通过无线串口透传模块进行数据中转&#xff0c;传递到单片机串口上。串口…