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

(五)Spring教程——Spring IoC容器(上)

        在Spring框架中,Bean的实例化和组装都是IoC容器配置元数据完成的。Spring框架提供的容器主要是基于BeanFactory和ApplicationContext两个接口,一种是实现BeanFactory接口的简单容器,另一种是实现ApplicationContext接口的高级容器。

        BeanFactory是比较传统的IoC实现方式,容器内的对象主动使用容器所提供的API来查找自己所依赖的组件。这种方式可以降低对象间的耦合度,同时也增加了对象对容器API的依赖。

        Spring框架可以通过名称、类型和注解这3种方式在BeanFactory接口种进行依赖查找。

        在pom.xml中添加springframework的引用

      <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-context</artifactId>

            <version>4.0.0.RELEASE</version>

        </dependency>

        点击右侧的刷新按钮,下载添加的依赖

        在main/resouce文件夹中添加test.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 https://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="test" class="com.example.servlet001.bean.User"><property name="userId" value="1" /><property name="userName" value="用户1" /></bean></beans>

        在com.example.servlet001包中添加名字为bean的软件包,然后在该包中添加User类,User类的内容如下

package com.example.servlet001.bean;public class User {public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getUserId() {return userId;}public void setUserId(String userId) {this.userId = userId;}String userName;String userId;@Overridepublic String toString() {return "User{" +"userName='" + userName + '\'' +", userId='" + userId + '\'' +'}';}}

        添加Demo1.java类测试使用配置的加载User类

package com.example.servlet001;import com.example.servlet001.bean.User;import org.springframework.beans.factory.BeanFactory;import org.springframework.beans.factory.xml.XmlBeanFactory;import org.springframework.core.io.ClassPathResource;public class Demo1 {public static void main(String[] args) {BeanFactory factory=new XmlBeanFactory(new ClassPathResource("test.xml"));User user=(User)factory.getBean("test");System.out.println(user);}}

        运行该测试类后的输出结果为

相关文章:

(五)Spring教程——Spring IoC容器(上)

在Spring框架中&#xff0c;Bean的实例化和组装都是IoC容器配置元数据完成的。Spring框架提供的容器主要是基于BeanFactory和ApplicationContext两个接口&#xff0c;一种是实现BeanFactory接口的简单容器&#xff0c;另一种是实现ApplicationContext接口的高级容器。 BeanFact…...

TiDB学习1:TiDB体系架构概览

目录 1. TiDB体系结构 2. TiDBsever 3. TiKV 4. PD(Placement Driver) 5. TiFlash 1. TiDB体系结构 水平扩容或者缩容金融级高可用实时 HTAP云原生的分布式数据库兼容MySQ 5.7 协议 2. TiDBsever 处理客户端的连接SQL语句的解析和编译关系型数据与 kv 的转化(insert语句)S…...

Prometheus 保留或删除标签 labeldrop、labelkeep

保留或删除标签 有的时候我们也有保留或删除一些标签的需求&#xff0c;比如有的目标在时间序列上提供了许多额外的标签&#xff0c;这些标签用途不大&#xff0c;这个时候我们就可以使用 labelkeep 和 labeldrop 这两个操作&#xff0c;使用这两个操作可以有选择地保留或删除一…...

uniapp中实现保存图片,复制信息功能函数的封装

1.首先在until文件中创建common.js文件&#xff08;根据你自己的实际情况定&#xff0c;重点在下边的函数封装中&#xff09; // 复制信息 export function copyData (data) {uni.setClipboardData({data: data,success: function () {uni.showToast({title: 复制成功})}}); }/…...

C#【进阶】委托和事件

委托和事件 文章目录 1、委托1、委托概念2、基本语法3、定义自定义委托4、使用自定义委托5、委托变量可以存储多个函数6、系统定义好的委托思考 怪物死亡数据更新 2、事件1、事件概念2、事件的使用3、为什么有事件思考 热水器 3、匿名函数1、匿名函数概念2、基本语法3、使用4、…...

【class9】人工智能初步(处理单张图片)

Class9的任务&#xff1a;处理单张图像 为了更高效地学习&#xff0c;我们将“处理单张图像”拆分成以下几步完成&#xff1a; 1. 读取图像文件 2. 调用通用物体识别 3. 提取图像分类信息 4. 对应分类文件夹还未创建时&#xff0c;创建文件夹 5. 移动图像到对应文件夹 0.获取…...

cgicc开发 (结合jsoncpp)

#include <iostream> #include <fstream> //读写文件 c标准库 #include <string> //字符串类 c标准库 #include <sstream> //字符串流 c标准库 #include <assert.h> #include "json/json.h" //jsoncpp的头文件#include <cgicc/CgiD…...

HTML常用标签及属性

一、简单标签 标签作用div 自带换行&#xff0c;块级显示span 语义化标签&#xff0c;无任何修饰效果br 换行&#xff0c;单标签hr 水平分割线&#xff0c;单标签h1 ~ h6 标题标签&#xff0c;有加粗效果&#xff0c;h1最明显&#xff0c;往后依次减弱&#xff0c;独占一行&am…...

【PB案例学习笔记】-03用户名密码校验

写在前面 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gitee代码仓库https://gitee.com/xiezhr/pb-project-example.git 需要源代码的小伙伴们可以自行…...

设计模式六大原则之 接口分离原则

文章目录 概念比较代码示例优势 小结 概念 要为各个类建立它们需要的专用接口&#xff0c;而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。 比较 概念有了&#xff0c;再来看看比较下吧&#xff0c;和单一职责比较比较。 接口隔离原则和单一职责都是为了提高类的…...

嵌入式学习——Shell()——day21

&#xff08;1&#xff09;标准IO——有缓存 1.打开文件 fopen 2.读写文件 fgetc/fputc fgets/fputs fprintf/fscanf 3.关闭文件 fclose 1. 缓存&#xff08;标准I…...

STM32学习计划

前言&#xff1a; 这里先记录下STM32的学习计划。 2024/05/08 今天我正在学习的是正点原子的I.MX6ULL APLHA/Mini 开发板的 Linux 之ARM裸机第二期开发的视频教程&#xff0c;会用正点原子的I.MX6ULL开发板学习第二期ARM裸机开发的教程&#xff0c;然后是学习完正点原子的I.M…...

小米15曝光?可能会要稍微涨价

也许是感受到了智能机市场的逐渐复苏&#xff0c;最近各大手机品牌发售新品的速度明显加快了。从4月份的Redmi、一加&#xff0c;再到5月份一大堆vivo、OPPO新机型的发布。而近日&#xff0c;有关小米14即将发售的消息也是悄咪咪的放了出来。 去年发售的小米14可以说是狠狠地让…...

深度优先搜索汇总

常用英文 最近公共祖先&#xff08;Lowest Common Ancestor&#xff0c;简称LCA&#xff09; posterity&#xff0c;英语单词&#xff0c;主要用作名词&#xff0c;作名词时译为“子孙&#xff0c;后裔&#xff1b;后代”。 什么是深度优先搜索 深度优先搜索&#xff0c;D…...

【虚拟仿真】Unity3D中实现对大疆无人机遥控器手柄按键响应

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群:398291828大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 最近项目中需要用到大疆无人机遥控器对程序中无人机进行控制,遥控器是下图这一款: 博主发…...

Python学习之路 | Python基础语法(一)

数据类型 Python3 中常见的数据类型有&#xff1a; Number&#xff08;数字&#xff09;String&#xff08;字符串&#xff09;bool&#xff08;布尔类型&#xff09;List&#xff08;列表&#xff09;Tuple&#xff08;元组&#xff09;Set&#xff08;集合&#xff09;Dict…...

【已解决】AttributeError: module ‘clip‘ has no attribute ‘load‘

问题描述&#xff1a;运行YOLO-world时出现AttributeError: module clip has no attribute load。 情况分析&#xff1a; 1. 未安装clip包。 2. clip包中没有load方法。 解决办法&#xff1a; 1.重新安装clip包。 pip install clip pip install openai-clip 2. 安装后仍然报…...

安卓实现连接wesokcet

在build.gradle里引入依赖&#xff1a; implementation org.java-websocket:Java-WebSocket:1.5.2 在Androidmanifest.xml 文件里加入网络权限&#xff1a; <uses-permission android:name"android.permission.INTERNET" /> 代码&#xff1a; package com.x…...

Xinstall助力App下载量精准统计,洞悉推广效果

在移动互联网时代&#xff0c;App的下载量是衡量一个应用受欢迎程度的重要指标。然而&#xff0c;要精准统计App的下载量并不是一件容易的事情。为了解决这一难题&#xff0c;越来越多的开发者选择了Xinstall这一专业的App全渠道统计服务商。 Xinstall作为国内领先的App统计平…...

CSS字体修饰

1&#xff09;文字大小 &#xff08; font-size &#xff09; /* 设置文字大小为24个像素 */ font-size: 24px; 2&#xff09;字体粗细 &#xff08; font-weight &#xff09; /* 字体粗细在100-900之间可以进行调整 */ /* 字体加粗 */ font-weight: bolder; /* 或 fon…...

基于图数据库与语义分析的个人知识管理系统Engram-Mem部署与实践

1. 项目概述与核心价值最近在整理个人知识库和笔记系统时&#xff0c;我遇到了一个几乎所有深度思考者都会面临的困境&#xff1a;信息过载与知识碎片化。我们每天都在阅读文章、保存链接、记录灵感&#xff0c;但这些信息就像散落一地的拼图&#xff0c;彼此孤立&#xff0c;难…...

AI智能体开发实战:基于ai_agents_az框架构建数据分析助手

1. 项目概述与核心价值最近在探索AI智能体&#xff08;AI Agent&#xff09;的落地应用时&#xff0c;我偶然发现了一个名为gyoridavid/ai_agents_az的开源项目。这个项目名听起来就很有意思&#xff0c;ai_agents点明了主题&#xff0c;az则暗示了某种从A到Z的全面性或是一个特…...

Adobe-GenP完整指南:5步轻松激活Adobe全系列软件

Adobe-GenP完整指南&#xff1a;5步轻松激活Adobe全系列软件 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP是一款专为Adobe Creative Cloud用户设计的通…...

对比直接使用官方API体验Taotoken在用量透明上的优势

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比直接使用官方API体验Taotoken在用量透明上的优势 在集成大模型能力到实际项目时&#xff0c;开发者通常会面临一个共同的挑战&…...

ESP32驱动LCD1602:从I2C协议到动态数据展示

1. ESP32与LCD1602的完美组合 如果你正在寻找一种简单可靠的方式在物联网项目中显示实时数据&#xff0c;ESP32搭配LCD1602液晶屏绝对是个不错的选择。我最近在一个智能温室项目中就用了这套方案&#xff0c;用来实时显示温度和湿度数据&#xff0c;效果非常稳定。LCD1602虽然看…...

【AI Agent软件直控革命】:20年架构师亲授5大落地陷阱与3步安全接入法

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI Agent软件直控革命&#xff1a;从概念到产业拐点 AI Agent 已不再停留于对话式助手或任务调度器的初级形态&#xff0c;正加速演进为具备环境感知、自主决策与系统级直控能力的“数字执行体”。其核…...

半导体测试数据可视化终极指南:STDF-Viewer从入门到精通

半导体测试数据可视化终极指南&#xff1a;STDF-Viewer从入门到精通 【免费下载链接】STDF-Viewer A free GUI tool to visualize STDF (semiconductor Standard Test Data Format) data files. 项目地址: https://gitcode.com/gh_mirrors/st/STDF-Viewer STDF-Viewer是…...

避开这些坑!用AD5934测量从3Ω到100kΩ阻抗的实战经验与校准技巧

避开这些坑&#xff01;用AD5934测量从3Ω到100kΩ阻抗的实战经验与校准技巧 在精密阻抗测量领域&#xff0c;AD5934作为一款高集成度的阻抗转换芯片&#xff0c;凭借其宽频带扫描能力和数字解调技术&#xff0c;成为从生物传感器到材料分析等多个领域的核心器件。但实际应用中…...

如何通过DLSS版本管理工具提升30%游戏性能:实战指南

如何通过DLSS版本管理工具提升30%游戏性能&#xff1a;实战指南 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款开源游戏性能优化工具&#xff0c;专门用于管理DLSS、FSR和XeSS动态库版本。你是否曾…...

Windows平台QT BLE开发避坑指南:从环境搭建到稳定通信

1. Windows平台QT BLE开发环境搭建 在Windows平台上使用QT进行BLE开发&#xff0c;首先需要确保开发环境正确配置。我遇到过不少开发者因为环境问题卡在第一步&#xff0c;白白浪费好几天时间。这里分享几个关键点&#xff1a; 编译器选择是第一个坑。实测发现必须使用MSVC编译…...