企业级信息系统开发学习笔记1.3 初探Spring——利用注解配置类取代Spring配置文件

news2024/12/23 0:49:12

文章目录

  • 零、本讲学习目标
  • 一、课程引入
  • 二、利用注解配置类取代Spring配置文件
    • (一)打开项目
    • (二)创建新包
    • (三)拷贝类与接口
    • (四)创建注解配置类
    • (五)创建测试类
    • (六)运行测试类
  • 三、课后作业

零、本讲学习目标

  1. 掌握利用注解配置类取代Spring配置文件

一、课程引入

  • 上一讲,我们利用注解精简了XML配置文件,这一讲,我们准备利用注解配置类取代XML配置文件。

二、利用注解配置类取代Spring配置文件

(一)打开项目

  • Maven项目 - SpringDemo
    在这里插入图片描述

(二)创建新包

  • net.huawei.spring包创建day03子包
    在这里插入图片描述

(三)拷贝类与接口

  • day02子包的类与接口拷贝到day03子包
    在这里插入图片描述

(四)创建注解配置类

  • day03子包里创建SpringConfig类,取代Spring配置文件
    在这里插入图片描述
package net.huawei.spring.day03;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * 功能:注解配置类
 * 作者:华卫
 * 日期:2023年02月20日
 */
@Configuration // 表明是Spring配置类
@ComponentScan("net.huawei.spring.day03")
public class SpringConfig {
}
  • 注解@Configuration声明当前类是一个配置类,对应一个Spring配置文件,可以取而代之。
  • 注解@ComponentScan自动扫描包名下所有使用@Component@Service@Repository@Mapper@Controller的类,并注册为Bean。
  • 注解@ComponentScan("net.huawei.spring.day03")相当于Spring配置文件里的<context:component-scan base-package="net.huawei.spring.day03"/>

(五)创建测试类

  • 在test/java里创建net.huawei.spring.day03包,在包里创建TestKnight
    在这里插入图片描述

  • AnnotationConfigApplicationContext ⟹ \Longrightarrow ApplicationContext ⟹ \Longrightarrow BeanFactory
    在这里插入图片描述

package net.huawei.spring.day03;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * 功能:测试骑士类
 * 作者:华卫
 * 日期:2023年02月20日
 */
public class TestKnight {
    private AnnotationConfigApplicationContext context; // 基于注解配置类的应用容器
    
    @Before
    public void init() {
        // 基于注解配置类创建应用容器
        context = new AnnotationConfigApplicationContext(SpringConfig.class);
    }
    
    @Test
    public void testKnight() {
        // 根据名称从应用容器里获取勇敢骑士对象
        Knight knight1 = (Knight) context.getBean("RobinHood");
        // 勇敢骑士执行任务
        knight1.embarkOnQuest();

        // 根据名称从应用容器里获取救美骑士对象
        Knight knight2 = (Knight) context.getBean("rescueDamselKnight");
        // 救美骑士执行任务
        knight2.embarkOnQuest();
    }
    
    @After
    public void destroy() {
        // 关闭应用容器
        context.close();
    }
}

(六)运行测试类

  • 运行testKnight测试方法,查看结果
    在这里插入图片描述

三、课后作业

  • 按照讲课笔记完成day03里的全部操作

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

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

相关文章

kubeadmd的部署+Dashboard+私有仓库

目录 一、kubeadm部署 1.1、环境准备 ​编辑 1.2、修改主机名 1.3、所有节点修改hosts文件 ​编辑 1.4、调整内核参数 1.5、参数生效 二、所有节点安装docker 三、所有节点安装kubeadm、kubelet和kubectl 四、 部署K8S集群 4.1、查看初始化需要的镜像 4.2、在 mas…

高压放大器在HIFU换能器和声场测量研究中的应用

实验名称&#xff1a;高压放大器在HIFU换能器和声场测量研究中的应用研究方向&#xff1a;医学超声测试目的&#xff1a;HIFU声场具有特殊的声场特性&#xff0c;要求用于声场检测的方法能够避免对声场造成干扰&#xff0c;同时避免高温高压和空化响应带来的冲击。目前报道的一…

音视频基本概念之物理音频和数字音频

一&#xff1a;物理音频初中物理知识 这里列举一些重要的可能和编码相关的重要物理知识 声音的频率是周期的倒数&#xff0c;它表示的是声音在1秒钟内的周期数&#xff0c;单位是赫兹(Hz)。千赫(kHz),即1000Hz,表示每秒振动1000次。声音按频率可作如下划分: 次声 0&#xff5…

【系统服务实战】tomcat服务的安装实战

未来要更新的专栏&#xff08;此表格后面会继续完善&#xff09; 专栏系列学习路线完成情况云原生系列linux基本功系列-基础命令汇总已更新51个命令云原生系列linux基本功系列-系统服务实战正在更新文章目录前言一. tomcat的概述1.1 什么是tomcat1.2 tomcat的官网二. tomcat单…

论文阅读:InfoNeRF: Ray Entropy Minimization for Few-Shot Neural Volume Rendering

中文标题&#xff1a;基于射线熵最小化的少视角神经辐射场 创新点 通过对每条射线密度施加熵约束来最小化稀疏视角带来的潜在重建不一致性。此外&#xff0c;为了缓解所有训练图像都是从几乎冗余的视点获取时潜在的退化问题&#xff0c;我们进一步将空间平滑性约束纳入到估计…

Apollo Config原理浅析

文章目录1. 简介2. 基本功能3. Apollo关键功能实现原理3.1 框架整体原理3.1.1 Apollo角色3.1.2 框架执行原理3.1.3 整体组成3.2 细节实现3.2.1 Eureka和不同角色机器的关系3.2.2 Meta Server的作用3.2.3 ReleaseMessage消息实现原理3.2.4 Client的通信方式1. 简介 apollo是携程…

python 实现 图象扩增(对原始图象进行增强,再保存下来) 同时符合交叉验证要求

图象扩增1 思路2 交叉验证实现3 数据扩增并且保存4 读原始交叉验证文件&#xff0c;针对argu文件夹新写一个5 模型Dataset6 总结和建议本文是图象分割数据集进行数据扩增&#xff0c;和图象分类进行数据扩增有稍许不同需求&#xff1a; 已有的图象分割数据集已经进行了五折交叉…

哈希表的介绍

1.哈希表的介绍 在哈希表中插入、删除或查找一个元素都只需要O(1)的时间&#xff0c;因此经常被用来优化时间效率。 在Java中&#xff0c;哈希表有两个对应的类型&#xff0c;即HashSet和HashMap。 2.HashSet的应用 若每个元素都只有一个值&#xff0c;则用HashSet&#xf…

2019蓝桥杯真题旋转 C语言/C++

题目描述 图片旋转是对图片最简单的处理方式之一&#xff0c;在本题中&#xff0c;你需要对图片顺时针旋转 90 度。 我们用一个 nm 的二维数组来表示一个图片&#xff0c;例如下面给出一个 34 的 图片的例子&#xff1a; 1 3 5 7 9 8 7 6 3 5 9 7 这个图片顺时针旋转 90 度…

2.20jdbc

一.数据库编程的必备条件编程语言:java c c Python数据库 Oracle,MySQL,SQL Server数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包:MySQL提供了Java的驱动包mysqlconnector-java,需要就Java操作MySQL需要该驱动包二.Java的数据库编程JDBC&#xff0c;即…

UG NX二次开发(C#)-导出-导出Parasolid文件(.x_t文件)

文章目录 1、前言2、在UG NX中的操作2、采用NXOpen二次开发实现1、前言 UG NX提供了多种文件的导入与导出功能,本文采用NXOpen.net来实现Parasolid文件(.x_t文件)的导出功能。 2、在UG NX中的操作 打开UG NX的一个三维模型,如下图所示。 点击“文件”->“导出”->“…

约束优化:约束优化的三种序列无约束优化方法

文章目录约束优化&#xff1a;约束优化的三种序列无约束优化方法外点罚函数法L2-罚函数法&#xff1a;非精确算法对于等式约束对于不等式约束L1-罚函数法&#xff1a;精确算法内点罚函数法&#xff1a;障碍函数法等式约束优化问题的拉格朗日函数法&#xff1a;Uzawas Method fo…

Win10 环境 安卓ollvm编译与配置 ndk代码混淆加密

确定你正在使用的ndk版本 查看build.gradle ndkVersion 21.4.7075529 确定你使用的ndk的ollvm版本 C:\Users\Administrator\AppData\Local\Android\Sdk\ndk\21.4.7075529\toolchains\llvm\prebuilt\windows-x86_64\bin\llvm-config.exe --version 9.0.9svn 确定了ollvm版本后…

Java序列化机制

Java序列化机制 概述 java中的序列化可能都停留在实现Serializable接口上&#xff0c;对于它里面的一些核心机制没有深入了解过。直到最近在项目中踩了一个坑&#xff0c;就是序列化对象添加一个字段以后&#xff0c;使用方系统报了反序列化失败&#xff0c;原因是我们双方的…

【ArcGIS Pro二次开发】(6):工程(Project)的基本操作

在ArcGIS Pro中我们对工程的基本操作一般包括打开、新建、保存等。下面演示在二次开发中如何用代码进行以上操作。 新建一个项目&#xff0c;命名为【ProjectManager】&#xff0c;添加8个按钮&#xff0c;命名为【CreateEmptyProject、CreateProjectByDefault、OpenExProjest…

易基因|MeRIP-seq揭示m6A RNA甲基化通过调控组蛋白泛素化来促进癌症生长和进展:Cancer Res

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。2022年05月16日&#xff0c;《Cancer Res》杂志发表了题为“M6A RNA Methylation Regulates Histone Ubiquitination to Support Cancer Growth and Progression”的研究论文&#xff0c;该…

Python解题 - CSDN周赛第30期 - 天然气订单

本期比赛的在线测试系统好像出了点问题&#xff0c;导致很多选手最后提交的分数是0&#xff0c;而问哥也遇到好几次提交后一直显示“运行中”而没有结果的情况。鉴于之前遇到过类似情况&#xff0c;不停地刷新页面才得以继续。但是此问题已经存在并持续了好几期&#xff0c;极大…

三、NetworkX工具包实战2——可视化【CS224W】(Datawhale组队学习)

开源内容&#xff1a;https://github.com/TommyZihao/zihao_course/tree/main/CS224W 子豪兄B 站视频&#xff1a;https://space.bilibili.com/1900783/channel/collectiondetail?sid915098 斯坦福官方课程主页&#xff1a;https://web.stanford.edu/class/cs224w NetworkX…

【Python--XML文件读写】XML文件读写详解

【Python–XML文件读写】XML文件读写详解 文章目录【Python--XML文件读写】XML文件读写详解1. 前言1.1 介绍1.2 用法2. xml文件内容形式3. xml文件读写3.1 项目框架3.1 写入操作&#xff08;创建&#xff09;&#xff08;create_xml.py&#xff09;3.2 读取操作&#xff08;解析…

虚拟 DOM 详解

什么是虚拟 dom&#xff1f; 虚拟 dom 本质上就是一个普通的 JS 对象&#xff0c;用于描述视图的界面结构 在vue中&#xff0c;每个组件都有一个render函数&#xff0c;每个render函数都会返回一个虚拟 dom 树&#xff0c;这也就意味着每个组件都对应一棵虚拟 DOM 树 查看虚拟…