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

java企业级信息系统开发学习笔记02初探spring——利用组件注解符精简spring配置文件

文章目录

  • 一、学习目标
  • 二、打开01的项目
  • 三、利用组件注解符精简spring配置文件
    • (一)创建新包,复制四个类
    • (二)修改杀龙任务类
    • (三)修改救美任务类
    • (四)修改勇敢骑士类
    • (五)修改救美骑士类
    • (六)创建spring配置文件
    • (七)创建测试类
  • 四、程序优化-面向接口
    • (一)创建任务接口
    • (二)创建骑士接口
    • (三)修改杀龙任务类
    • (四)修改救美任务类
    • (五)修改勇敢骑士类
    • (六)修改救美骑士类
    • (七)修改测试类
    • (八)运行测试类

一、学习目标

1.掌握采用组件注解符精简Spring配置文件
2.理解面向接口优化程序结构的思想

二、打开01的项目

在这里插入图片描述

三、利用组件注解符精简spring配置文件

(一)创建新包,复制四个类

在这里插入图片描述

(二)修改杀龙任务类

  • 杀龙任务类 - SlayDragonQuest
    在这里插入图片描述
  • 给Java类添加组件注解符@Component,意味着要交给Spring容器管理,如果没有设置参数,那么组件采用默认名称,就是类名首字母小写 - slayDragonQuest
package net.huawei.spring.day02;import org.springframework.stereotype.Component;/*** 功能:杀龙任务类* 作者:华卫* 日期:2023年02月13日*/
@Component
public class SlayDragonQuest {public void embark() {System.out.println("执行杀龙任务……");}
}

(三)修改救美任务类

  • 救美任务类 - RescueDamselQuest
package net.huawei.spring.day02;import org.springframework.stereotype.Component;/*** 功能:救美任务类* 作者:华卫* 日期:2023年02月20日*/
@Component
public class RescueDamselQuest {public void embark() {System.out.println("执行救美任务……");}
}

(四)修改勇敢骑士类

  • 勇敢骑士类 - BraveKnight
package net.huawei.spring.day02;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;/*** 功能:勇敢骑士类* 作者:华卫* 日期:2023年02月20日*/
@Component("RobinHood")
public class BraveKnight {@Value("罗宾汉") // 值注解符private String name;@Autowired // 自动装配注解符private SlayDragonQuest slayDragonQuest;/*** 勇敢骑士执行任务*/public void embarkOnQuest() {System.out.print("勇敢骑士[" + name + "]"); // 骑士留名slayDragonQuest.embark(); // 执行杀龙任务}
}

(五)修改救美骑士类

  • 救美骑士类 - DamselRescuingKnight,添加组件注解符,自动配置两个属性
package net.huawei.spring.day02;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;/*** 功能:救美骑士类* 作者:华卫* 日期:2023年02月20日*/
@Component
public class RescueDamselKnight {@Value("格拉海德") // 值注解符private String name;@Autowired // 自动装配注解符private RescueDamselQuest rescueDamselQuest;public void embarkOnQuest() {System.out.print("救美骑士[" + name + "]");rescueDamselQuest.embark();}
}

(六)创建spring配置文件

  • 在resources目录创建xml_annotation子目录,然后在里面创建Spring配置文件 - spring-config.xml
    在这里插入图片描述
  • 组件扫描:扫描指定包下添加了注解符的类(@Component、@Service、@Repository、@Mapper、@Controller),将其生成Bean对象
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd"><!--组件扫描,扫描指定包下添加了注解符的类或接口,将其生成Bean对象--><context:component-scan base-package="net.huawei.spring.day02" />
</beans>

(七)创建测试类

  • 在test/java里创建net.huawei.spring.day02包,在包里创建TestKnight类
package net.huawei.spring.day02;import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** 功能:测试骑士类* 作者:华卫* 日期:2023年02月20日*/
public class TestKnight {private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器@Beforepublic void init() {// 基于Spring配置文件创建应用容器context = new ClassPathXmlApplicationContext("xml_annotation/spring-config.xml");}@Testpublic void testKnight() {// 根据名称从应用容器里获取勇敢骑士对象BraveKnight knight1 = (BraveKnight) context.getBean("RobinHood");// 勇敢骑士执行任务knight1.embarkOnQuest();// 根据名称从应用容器里获取救美骑士对象RescueDamselKnight knight2 = (RescueDamselKnight) context.getBean("rescueDamselKnight");// 救美骑士执行任务knight2.embarkOnQuest();}@Afterpublic void destroy() {// 关闭应用容器context.close();}
}

四、程序优化-面向接口

  • Spring框架可以方便地管理Bean及其相互依赖。为了模块之间实现松耦合,一般采用面向接口的方式。多种骑士,多种任务,可以任意搭配。为了实现这个效果,我们应该抽象出两个接口:骑士接口(Knight)和任务接口(Quest)。骑士接口有两个实现类:BraveKnight和DamselRescuingKnight;任务接口有两个实现类:SlayDragonQuest和RescueDamselQuest。

(一)创建任务接口

package net.huawei.spring.day02;/*** 功能:任务接口* 作者:华卫* 日期:2023年02月20日*/
public interface Quest {void embark();
}

(二)创建骑士接口

package net.huawei.spring.day02;/*** 功能:骑士接口* 作者:华卫* 日期:2023年02月20日*/
public interface Knight {void embarkOnQuest();
}

(三)修改杀龙任务类

在这里插入图片描述

(四)修改救美任务类

在这里插入图片描述

(五)修改勇敢骑士类

在这里插入图片描述

(六)修改救美骑士类

在这里插入图片描述

(七)修改测试类

在这里插入图片描述

(八)运行测试类

在这里插入图片描述

相关文章:

java企业级信息系统开发学习笔记02初探spring——利用组件注解符精简spring配置文件

文章目录一、学习目标二、打开01的项目三、利用组件注解符精简spring配置文件&#xff08;一&#xff09;创建新包&#xff0c;复制四个类&#xff08;二&#xff09;修改杀龙任务类&#xff08;三&#xff09;修改救美任务类&#xff08;四&#xff09;修改勇敢骑士类&#xf…...

用Python发送电子邮件?这也太丝滑了吧(21)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 欢迎和猫妹一起&#xff0c;趣味学Python。 今日主题 猫爸赚钱养家&#xff0c;细想起来真的不容易啊&#xff01; 起早贪黑&#xff0c;都是6点早起做早饭&#xff0c;送…...

分类预测 | MATLAB实现CNN-GRU-Attention多输入分类预测

分类预测 | MATLAB实现CNN-GRU-Attention多输入分类预测 目录分类预测 | MATLAB实现CNN-GRU-Attention多输入分类预测分类效果模型描述程序设计参考资料分类效果 模型描述 Matlab实现CNN-GRU-Attention多变量分类预测 1.data为数据集&#xff0c;格式为excel&#xff0c;12个输…...

C++提高编程(1)

C提高编程1.模板1.1模板的概念1.2函数模板1.2.1函数模板语法1.2.2函数模板注意事项1.2.3函数模板案例1.2.4普通函数与函数模板的区别1.2.5普通函数与函数模板的调用规则1.2.6模板的局限性1.3类模板1.3.1类模板语法1.3.2类模板和函数模板区别1.3.3类模板中成员函数创建时机1.3.4…...

day26 回溯算法的部分总结

回溯算法的部分总结 回溯算法是一种常用于解决排列组合问题、搜索问题的算法&#xff0c;它的基本思想是将问题的解空间转化为一棵树&#xff0c;通过深度优先搜索的方式遍历树上的所有节点&#xff0c;找到符合条件的解。回溯算法通常使用递归实现&#xff0c;每次递归时传入…...

带你玩转Python爬虫(胆小者勿进)千万别做坏事·······

这节课很危险&#xff0c;哈哈哈哈&#xff0c;逗你们玩的 目录 写在前面 1 了解robots.txt 1.1 基础理解 1.2 使用robots.txt 2 Cookie 2.1 两种cookie处理方式 3 常用爬虫方法 3.1 bs4 3.1.1 基础介绍 3.1.2 bs4使用 3.1.2 使用例子 3.2 xpath 3.2.1 xpath基础介…...

【JavaScript 】严格模式,With关键字,测试框架介绍,assert

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录静态类型语言弱类型严格模式将过失错误转化为异常简化变量的使用With测试框架try-catch选择性捕获…...

mybatis实现一个简单的CRUD功能的小案例(后端)编写流程

下面是一个使用mybatis实现增删改查功能的示例程序&#xff1a; 1.创建一个数据库 首先需要创建一个名为test_db的数据库&#xff0c;里面包含一个名为user_info的表&#xff0c;其中包含id、name、age三个字段。 2.配置mybatis 在项目的pom.xml文件中添加mybatis和mysql依…...

腾讯云轻量应用服务器价格表(2023版)

2023腾讯云轻量应用服务器2核2G4M带宽88元一年、2核4G6M带宽159元/年、4核8G10M优惠价425元、8核16G14M价格1249、16核32G20M服务器2499元一年&#xff0c;今天分享2023腾讯云服务器配置及精准报价。 腾讯云轻量应用服务器优惠价格表 腾讯云服务器分为轻量应用服务器和云服务器…...

网络层IP协议和数据链路层

目录IP协议协议头格式分片网段划分特殊的IP地址IP地址的数量限制NAT技术NAT技术背景NAT IP转换过程NAPTNAT技术的缺陷NAT和代理服务器私有IP地址和公网IP地址路由路由表生成算法数据链路层认识以太网以太网帧格式认识MAC地址对比理解MAC地址和IP地址认识MTUMTU对IP协议的影响MT…...

零基础学习Java 03

目录 数组 动态初始化数组 静态初始化 数组的应用 数组两种典型的异常 length关键字求出数组的长度 数组遍历在IDEA中输出快捷语句 对象数组 数组的遍历&#xff1a;foreach方法 二维数组 枚举(enum) 数组 1在方法中可以返回一个数组&#xff0c;但是在定义方法时类型要…...

PG数据库超时退出 TCP设定

数据库在使用psql工具以及jdbc进行远程连接时&#xff0c;在经过一定时间之后报错-致命错误&#xff1a; terminating connection due to client no input timeout。 排查安全参数&#xff0c;hg_clientnoinput 0&#xff1b; 问题原因 操作系统TCP相关参数设置不正确&…...

每日学术速递4.4

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CL 1.Baize: An Open-Source Chat Model with Parameter-Efficient Tuning on Self-Chat Data 标题&#xff1a;Baize&#xff1a;一种对自聊天数据进行参数高效调优的开源聊天模型 作者…...

ChatGPT将引发大量而普遍的网络安全隐患

ChatGPT是一个基于人工智能的语言生成模型&#xff0c;它可以在任何给定的时间&#xff0c;使用自然语言生成技术&#xff0c;生成文本、对话和文章。它不仅可以被用来编写文本&#xff0c;还可以用来编写语言、生成图像和视频。目前&#xff0c; ChatGPT已广泛应用于语言翻译、…...

购买学生护眼台灯几瓦最好?有哪些推荐护眼灯

现今的近视已然成为普遍现象&#xff0c;而且有往低年龄段发展的趋势。究其原因&#xff0c;长期使用电子设备是一方面&#xff0c;还是就是我们日常工作、学习、生活没有很好的护眼环境&#xff0c;很多时候我们不经意的错误习惯&#xff0c;久而久之就有可能诱发近视。对孩子…...

什么是 SYN 攻击?如何避免 SYN 攻击?

SYN 攻击方式最直接的表现就会把 TCP 半连接队列打满&#xff0c;这样当 TCP 半连接队列满了&#xff0c;后续再在收到 SYN 报文就会丢弃&#xff0c;导致客户端无法和服务端建立连接。 避免 SYN 攻击方式&#xff0c;可以有以下四种方法&#xff1a; 调大 netdev_max_backlo…...

数据分析练习——学习一般分析步骤

目录 一、准备工作 二、导入库和数据 1、导入必要的库&#xff1a; 2、模拟数据 三、数据分析过程 1、读取数据&#xff1a; 2、数据概览和描述性统计&#xff1a; 2.1、查看数据概览&#xff1a; 2.2、查看描述性统计&#xff1a; 3、数据清洗&#xff1a; 3.1、处…...

Linux环境下挂载exfat格式U盘,以及安装exfat文件系统

目录Linux一般支持的文件系统有&#xff1a;1.安装exfat软件安装工具环境以及exfat件依赖的系统软件下载exfat源码包并安装2.挂载exfat格式U盘查看U盘在那个目录执行挂载命令Linux一般支持的文件系统有&#xff1a; 文件系统名称详情ext专门为Linux核心做的第一个文件系统&…...

网格布局grid

grid网格定义 css网格是一个用于web的二维&#xff08;行和列的组合&#xff09;布局&#xff0c;利用网格&#xff0c;你可以把内容按照行和列的格式进行排版&#xff0c;另外&#xff0c;可以轻松的实现复杂布局。 1.定义网格和fr单位 1.1定义网格 在父元素加上&#xff…...

《扬帆优配》环境更优!这类资金,迎利好!

近来&#xff0c;第一批主板注册制新股连续发动申购&#xff0c;网下询价中&#xff0c;组织出资者频繁现身打新商场&#xff0c;公募基金、社保基金、养老金、保险资金等中长时间资金&#xff0c;成为全面注册制下新股发行商场的重要参加者。 多位业内人士对此表明&#xff0c…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...