当前位置: 首页 > news >正文

Spring项目创建流程及配置文件bean标签参数简介

Spring文档根目录——里面可以找到所有版本

1. 项目搭建流程

1. pom.xml中引入依赖Spring-webMVC

<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.18</version></dependency>

2.创建Spring配置文件 – applicationContext.xml

在resoures下创建xml文件
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"></beans>

创建完毕后点击右上角的 configure application context 再选择create new application context… 。在弹出的弹窗里直接点击确定
在这里插入图片描述

3.创建测试用的类

Hello.java

package com.zbt.ioc.dto;/*** @author* @createAt 2025/1/8 21:07*/public class Hello {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public void show(){System.out.println("Hello "+name);}
}

4.配置文件中配置类

<!-- 使用Spring来创建对象  在Spring中这些对象统称为Bean --><bean id="hello" class="com.zbt.ioc.dto.Hello" name="helloOtherName"><property name="name" value="Spring"/></bean>

5. 编写测试类

HelloSpring.java

package com.zbt.ioc.controller;import com.zbt.ioc.dto.Hello;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** @author* @createAt 2025/1/8 21:00*/public class HelloSpring {public static void main(String[] args) {//通过加载配置文件 获取Spring的上下文对象ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");//我们的对象都在Spring中管理了,我们要使用的时候  直接去容器中取出来就可以了/*<bean id="hello" class="com.zbt.ioc.dto.Hello" name="helloOtherName"><property name="name" value="Spring"/></bean>相当于自动帮我们new 了 一个Hello对象  id 为变量名  class为要new 的对象的路径 name为别名,可以通过逗号分隔取多个别名  context.getBean()通过别名也能取到对象其中 property 相当于 给对象的属性赋了一个值 name为属性名  value为属性值(通过属性的set方法注入了属性值)思考:对象是由Spring创建的 属性也是Spring赋值的  这个过程就叫做控制反转*///通过 id 取Hello hello = (Hello)context.getBean("hello");hello.show();//通过 别名 取Hello helloOtherName = (Hello)context.getBean("helloOtherName");helloOtherName.show();}
}

运行结果
在这里插入图片描述

2.bean标签简介

        <bean id="hello" class="com.zbt.ioc.dto.Hello" name="helloOtherName"><property name="name" value="Spring"/></bean>

这段配置文件相当于自动帮我们new 了 一个Hello对象 ,并将对象的name属性赋值为Spring
其中:
id :为变量名
class:为要new 的对象的路径
name:为别名,可以通过逗号分隔取多个别名 context.getBean()通过别名也能取到对象
property: 相当于 给对象的属性赋了一个值 (name:为属性名 ;value:为属性值(通过属性的set方法注入了属性值); ref:为引用Spring中已经注入的类的id)

思考:
对象是由Spring创建的
属性也是Spring赋值的
这个过程就叫做控制反转(IOC)

3.Spring IOC对象创建方式

默认为调用实体类的无参构造方法
注意:如果没有无参构造 且 未通过constructor-arg标签指定有参构造则会报错

通过constructor-arg标签指定有参构造创建对象
共有三种方式:
1. 通过下标给构造器传参数(这里的下标是指构造函数的第几个参数)
2. 通过参数类型匹配给构造器传参数 不推荐使用,如果构造器有多个类型相同的参数就会无法匹配
3. 直接通过参数名匹配给构造器传参数 推荐使用

<bean id="hello" class="com.zbt.ioc.dto.Hello" name="helloOtherName"><constructor-arg index="0" value="第一个参数"/><constructor-arg type="java.lang.String" value="给String类型的参数赋值"/><constructor-arg name="name" value="给属性name赋值"/></bean>

相关文章:

Spring项目创建流程及配置文件bean标签参数简介

Spring文档根目录——里面可以找到所有版本 1. 项目搭建流程 1. pom.xml中引入依赖Spring-webMVC <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --><dependency><groupId>org.springframework</groupId><artif…...

reactor中的并发

1. reactor中的并发有两种方式 1.1 flatmap&#xff0c;底层是多线程并发处理。在reactor的演讲中&#xff0c;flatmap对于io类型的并发效果较好. flamap有两个参数: int concurrency, int prefetch。分别代表并发的线程数和缓存大小 注意凡是参数中有prefetch的&#xff0c;都…...

太速科技-418-基于AD9361 +ZYNQ7020 的软件无线电 SDR 套件

基于AD9361 ZYNQ7020 的软件无线电 SDR 套件 一、板卡信息 ● ZYNQ芯片采用XC7Z020&#xff0c;逻辑容量更大&#xff0c;支持更大的逻辑设计&#xff1b; ● 内存采用两片512M DDR3&#xff0c;共1GByte&#xff0c;更大容量。 ● 支持千兆网口&#xff0c;支持ZEDFMCO…...

监控易:一体化智能运维的扩展性优势深度解析

在现代企业数字化转型过程中&#xff0c;IT运维的需求日益多样化。企业不仅需要高效监控庞大的IT资源&#xff0c;还需应对多业务系统的集成需求&#xff0c;同时确保监控系统具备足够的灵活性以满足个性化的场景应用。 监控易凭借“一体化智能运维”的理念和技术&#xff0c;展…...

朴素贝叶斯算法:从生活到数学的完整解析

朴素贝叶斯算法:从生活到数学的完整解析 1. 引言:生活中的贝叶斯思维 想象你是一位医生,看到一位病人: 发烧(体温39度)咳嗽喉咙痛你会如何判断他是得了感冒还是新冠?这就是一个典型的贝叶斯思维过程。 2. 从直觉到数学 2.1 直觉思维 我们的思维过程是: 知道新冠和…...

Echarts的认识和基本用法

Echarts介绍和使用 Echarts介绍 官网地址&#xff1a;Apache ECharts Echarts是一个基于JavaScript的开源可视化图表库&#xff0c;由百度前端开发团队研发和维护。它提供了丰富的图表类型、数据统计分析、动态数据更新、多维数据展示等功能&#xff0c;可以帮助开发人员在 W…...

Linux文件系统的安全保障---Overlayroot!

overlayroot 是一种使用 OverlayFS 实现的功能&#xff0c;可将根文件系统挂载为只读&#xff0c;并通过一个临时的写层实现对文件系统的修改。这种方法非常适合嵌入式设备或需要保持系统文件完整性和安全性的场景。下文以 RK3568 平台为例&#xff0c;介绍制作 overlayroot 的…...

【Linux 之一 】Linux常用命令汇总

Linux常用命令 ./catcd 命令chmodclearcphistoryhtoplnmkdirmvpwdrmtailunamewcwhoami 我从2021年4月份开始才开始真正意义上接触Linux&#xff0c;最初学习时是一脸蒙圈&#xff0c;啥也不会&#xff0c;啥也不懂&#xff0c;做了很多乱七八糟&#xff0c;没有条理的笔记。不知…...

【线性代数】通俗理解特征向量与特征值

这一块在线性代数中属于重点且较难理解的内容&#xff0c;下面仅个人学习过程中的体会&#xff0c;错误之处欢迎指出&#xff0c;有更简洁易懂的理解方式也欢迎留言学习。 文章目录 概念计算几何直观理解意义 概念 矩阵本身就是一个线性变换&#xff0c;对一个空间中的向量应用…...

Unity 热更新基础知识

文章目录 1.一些名词2.三种编译方式3.Unity 两种脚本后端3.1 Mono3.2 IL2CPP3.3 对比 1.一些名词 IL&#xff08;Intermediate Language&#xff09;&#xff1a;中间语言&#xff08;类似于汇编代码&#xff09;CIL&#xff08;Common Intermediate Language&#xff09;&…...

安全基础-互联网技术基础

互联网技术基础 概述&#xff1a;计算机网络、网络协议、HTTP协议、前端与后端技术、Web服务器、数据库以及浏览器等 目录 互联网技术基础前言一、计算机网络定义二、网络协议和协议分层1.OSI七层模型2.TCP/IP四层模型 三、HTTP协议1、HTTP协议的特点2、HTTP请求3、HTTP响应4、…...

深度学习从入门到实战——卷积神经网络原理解析及其应用

卷积神经网络CNN 卷积神经网络前言卷积神经网络卷积的填充方式卷积原理展示卷积计算量公式卷积核输出的大小计算感受野池化自适应均值化空洞卷积经典卷积神经网络参考 卷积神经网络 前言 为什么要使用卷积神经网络呢&#xff1f; 首先传统的MLP的有什么问题呢&#xff1f; - …...

React快速上手到项目实战总篇

React核心价值与前置知识 时刻保持对知识的渴望 家人们 开学!!! 核心价值 组件化&#xff08;易开发易维护&#xff09; 数据驱动视图 &#xff1a;定义好数据和ui的显示规则 即UIf(state) 只关注业务数据修改&#xff0c;不在操作DOM 增加开发效率 使用vite创建Recat项目 …...

HTMLHTML5革命:构建现代网页的终极指南 - 0. 课程目录设计

结构清晰&#xff0c;层层递进 课程从基础知识&#xff08;如HTML学前必知&#xff09;开始&#xff0c;逐步深入到高级应用&#xff08;如PWA配置和WebApp优化&#xff09;。每个模块都有明确的目标&#xff0c;适合零基础学员逐步掌握HTML。 覆盖范围广 这套课程涵盖了HTM…...

ffplay 命令行 从视频第N帧开始读取 ffmpeg 命令行 提取第N帧图片

ffmpeg中没有直接的命令读取第N帧 但是可以通过 t N/framerate 来获取到具体第N帧的时间 然后用 -ss t进行跳转。 比如帧率&#xff08;frame rate&#xff09;为24fps的视频G:/1/1.mp4文件从第1000帧开始进行播放&#xff0c;先计算出时间为 t 41.66666 ffplay -i G:/1/1.…...

Spring AMQP-保证消费者消息的可靠性

为什么要保证消息的可靠性&#xff1f; 当MQ向消费者发送一个消息之后需要得到消费者的状态&#xff0c;因为消息并不一定就真的被消费者给消费了&#xff0c;可能在消费的过程中出现了一些意外&#xff0c;比如 1. 网络问题 2. 消息转换有问题 3. 消费者本身的业务处理有问题 …...

Linux(Centos 7.6)命令详解:mkdir

1.命令作用 如果目录还不存在&#xff0c;则创建目录(Create the DIRECTORY, if they do not already exist.) 2.命令语法 Usage: mkdir [OPTION]... DIRECTORY... 3.参数详解 OPTION: -m, --modeMODE&#xff0c;创建新目录同时设置权限模式-p, --parents&#xff0c;创…...

在K8S上部署OceanBase的最佳实践

在K8S上部署OceanBase的最佳实践 目录 1. 背景与选型 1.1 为什么选择OB1.2 为什么选择ob-operator实现OB on K8S 2. 部署实操 2.1 环境准备2.2 安装 ob-operator2.3 配置 OB 集群2.4 配置 OBProxy 集群2.5 Headless Service 和 CoreDNS 配置2.6 监控与运维 2.6.1 Promethues部…...

IDEA中Maven依赖包导入失败报红的潜在原因

在上网试了别人的八个问题总结之后依然没有解决&#xff1a; IDEA中Maven依赖包导入失败报红问题总结最有效8种解决方案_idea导入依赖还是报红-CSDN博客https://blog.csdn.net/qq_43705131/article/details/106165960 江郎才尽之后突然想到一个原因&#xff1a;<dep…...

【计算机网络】课程 实验五 静态路由配置

实验五 静态路由配置 一、实验目的 理解静态路由的工作原理&#xff0c;掌握如何配置静态路由。 二、实验分析与设计 【背景描述】 假设校园网分为 2 个区域&#xff0c;每个区域内使用 1 台路由器连接 2 个子网&#xff0c; 现要在路由器上 做适当配置&#xff0c;实现校…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...