Spring——幾個常用注解

環境配置

1.在配置文件中導入約束(context — 共三個)并添加一項配置( context:annotation-config/) 才能支持注解的使用

context 約束:

  1. xmlns:context=“http://www.springframework.org/schema/context”
    2.xsi:schemaLocation下的:" http://www.springframework.org/schema/context"
    3.xsi:schemaLocation下的:" https://www.springframework.org/schema/context/spring-context.xsd"
<?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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd"><!-- 配置Spring自動掃描com.zbt.anno包 這個包下的注解就可以生效 --><context:component-scan base-package="com.zbt.anno"/><context:annotation-config/></beans>

2.在配置文件中添加一項注解掃描配置,掃描指定的包

<!-- 配置Spring自動掃描com.zbt.anno包 這個包下的注解就可以生效 -->
<context:component-scan base-package="com.zbt.anno"/>

使用注解進行開發

1. 類的注冊——@Component

1.在dto包下建一個類User

有一個屬性name 我們給他一個默認值為“名字”

package com.zbt.anno.dto;/*** @author* @createAt 2025/1/12 16:36*/public class User {private String name = "名字";public String getName() {return name;}public void setName(String name) {this.name = name;}
}

按照之前接觸到的開發方式,我們需要將user類在xml中注冊為bean

<bean id="user" class="com.zbt.anno.dto.User"/>

使用注解進行開發則不必如此麻煩,因為User的包路徑為 com.zbt.anno.dto,而我們將com.zbt.anno 配置為Spring自動掃描路徑,所以,只要在User類的類名的上一行加上注解==@Component==即可完成User類在Spring容器中的注冊。

package com.zbt.anno.dto;import org.springframework.stereotype.Component;/*** @author* @createAt 2025/1/12 16:36*/@Component
public class User {private String name = "名字";public String getName() {return name;}public void setName(String name) {this.name = name;}
}

編寫測試類MyTest.java

import com.zbt.anno.dto.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** @author* @createAt 2025/1/12 17:00*/public class MyTest {@Testpublic void testComponent(){ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");User user = context.getBean("user", User.class);System.out.println(user.getName());}
}

控制臺輸出如下:
在這里插入圖片描述
Component有幾個衍生注解@Controller、@Service、@Repository
@Controller:controller層注冊bean使用
@Service:service層注冊bean使用
@Repository:dao層注冊bean使用

2.屬性的注入——@Value

按照之前接觸到的開發方式,我們需要將user類在xml中注冊為bean,然后通過標簽注入String類型的屬性

<bean id="user" class="com.zbt.anno.dto.User"><property name="name" value="名字"/></bean>

使用注解進行開發則,只要在屬性名的上一行加上注解==@Value(“要注入的屬性值”)==即可完成該屬性的屬性值注入。

package com.zbt.anno.dto;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;/*** @author* @createAt 2025/1/12 16:36*/@Component
public class User {@Value("名字")private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}
}

運行先前的測試類MyTest.java
同樣可以看到控制臺輸出——名字

java類進行配置(無需使用xml文件配置bean)

可以在java類名上加上@Configuration,即可將這個類作為Spring的配置類

@Configuration 可以理解為xml標簽中的beans標簽,里面可以用bean標簽配置多個類的bean,@Configuration注解的類里面,可以使用@Bean注解配置類的bean。

MyConfiguration .java

package com.zbt.anno.conf;import com.zbt.anno.dto.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @author* @createAt 2025/1/12 19:37*/@Configuration
public class MyConfiguration {/*等同于<bean id="getUser" class="com.zbt.anno.dto.User" />*///使用@Bean標注  取對象時 要通過 方法名獲取 也可以寫作@Bean(name="bean的id") 規定bean的id,就可以直接通過這個id取到對象@Beanpublic User getUser(){return new User();}
}

加載配置
之前加載xml配置文件,現在加載java配置類。

import com.zbt.anno.conf.MyConfiguration;
import com.zbt.anno.dto.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** @author* @createAt 2025/1/12 17:00*/public class MyTest {@Testpublic void testJavaApplicationConfig(){//加載配置類ApplicationContext context = new AnnotationConfigApplicationContext(MyConfiguration.class);//取對象時 要通過 方法名獲取User user = context.getBean("getUser", User.class);System.out.println(user.getName());}
}

配置類可以使用的一些注解
@ComponentScan(“包路徑”):配置包的掃描路徑 等同于配置文件中的 <context:component-scan base-package=“包路徑”/>
@Import(被引入的配置類的class對象):合并其他的配置類至此 等同于配置文件中的

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65865.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65865.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65865.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Oopsie【hack the box】

Oopsie 解題流程 文件上傳 首先開啟機器后&#xff0c;我們先使用 nmap -sC -SV來掃描一下IP地址&#xff1a; -sC&#xff1a;使用 Nmap 的默認腳本掃描&#xff08;通常是 NSE 腳本&#xff0c;Nmap Scripting Engine&#xff09;。這個選項會自動執行一系列常見的腳本&am…

單片機-定時器中斷

1、相關知識 振蕩周期1/12us; //振蕩周期又稱 S周期或時鐘周期&#xff08;晶振周期或外加振蕩周期&#xff09;。 狀態周期1/6us; 機器周期1us; 指令周期1~4us; ①51單片機有兩組定時器/計數器&#xff0c;因為既可以定時&#xff0c;又可以計數&#xff0c;故稱之為定時器…

【藍牙】win11 筆記本電腦連接 hc-06

文章目錄 前言步驟 前言 使用電腦通過藍牙添加串口 步驟 設置 -> 藍牙和其他設備 點擊 顯示更多設備 更多藍牙設置 COM 端口 -> 添加 有可能出現卡頓&#xff0c;等待一會 傳出 -> 瀏覽 點擊添加 hc-06&#xff0c;如果沒有則點擊 再次搜索 確定 添加成…

Android切換語言不退出App

1.需求 實現用戶選擇語言&#xff08;未點擊下一步&#xff09;&#xff0c;更新當前界面UI&#xff0c;點擊下一步后&#xff0c;更新App的語言&#xff0c;并進行保存。 實現目標&#xff1a; 1.設置App的語言&#xff0c;本地進行保存 2.updateResources更新本地語言配置…

一鍵獲取Linux主機配置信息shell腳本,含網卡詳情,網卡綁定等

cat > /tmp/get_os_info.sh <<"EOF"#!/bin/bashexport LANG=en_US.UTF-8# 如果 cat /proc/1/cgroup | grep docker | wc -l 大于0 或 systemd-detect-virt 返回 docker,則為 docker容器,# 如果 virt-what 返回 kvm或vmware或hyperv或xen、xen-hvm、lxc 或…

2 XDMA IP中斷

三種中斷 1. Legacy 定義&#xff1a;Legacy 中斷是傳統的中斷處理方式&#xff0c;使用物理中斷線&#xff08;例如 IRQ&#xff09;來傳遞中斷信號。缺點&#xff1a; 中斷線數量有限&#xff0c;通常為 16 條&#xff0c;限制了可連接設備的數量。中斷處理可能會導致中斷風…

【算法】時間復雜度以及O(N^2)的排序

目錄 1.常數時間的操作 2.時間復雜度 2.1.以選擇排序為例 2.2.O(n^2)從何而來 2.3.冒泡排序 2.3.1.抑或運算 2.4.插入排序 3.二分法 3.1.局部最小 4.遞歸 4.1.遞歸行為時間復雜度的估計 1.常數時間的操作 一個操作如果和樣本的數據量無關&#xff0c;每次都是固定時…

2021 年 3 月青少年軟編等考 C 語言五級真題解析

目錄 T1. 紅與黑思路分析T2. 密室逃脫思路分析T3. 求逆序對數思路分析T4. 最小新整數思路分析T1. 紅與黑 有一間長方形的房子,地上鋪了紅色、黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移動。請寫一個程序,計算你總共能夠到達多少塊黑色的…

C# 或 .NetCore 如何使用 NPOI 導出圖片到 Excel 文件

今天在本文中&#xff0c;我們將嘗試使用NPOI庫將圖像插入到 Excel 文件的特定位置。請將以下邏輯添加到您的寫作方法中&#xff0c;在 Excel 文件中添加圖像&#xff08;JPEG、PNG&#xff09;,我已經有一個示例 jpeg 文件 - Read-write-excel-npoi.jpg &#xff0c;我們將嘗試…

【學習筆記】理解深度學習的基礎:機器學習

1. 機器學習基礎 1.1 機器學習的定義與重要性 定義&#xff1a;深度學習是機器學習的一種特定形式。為了深入理解深度學習&#xff0c;必須牢固掌握機器學習的基本原理。機器學習算法是一種能夠從數據中學習的算法&#xff0c;通過經驗E在任務T上提高性能度量P&#xff08;Mi…

Observability:將 OpenTelemetry 添加到你的 Flask 應用程序

作者&#xff1a;來自 Elastic jessgarson 待辦事項列表可以幫助管理與假期計劃相關的所有購物和任務。使用 Flask&#xff0c;你可以輕松創建待辦事項列表應用程序&#xff0c;并使用 Elastic 作為遙測后端&#xff0c;通過 OpenTelemetry 對其進行監控。 Flask 是一個輕量級…

使用Matplotlib顯示中文的方法

1 問題提出 使用圖1所示的代碼進行matplotlib繪圖時&#xff0c;因為其默認不支持中文&#xff0c;此時無法顯示正確內容&#xff0c;如圖2所示。 圖1 matplotlib繪圖繪圖代碼 圖2 matplotlib無法顯示中文 2 問題解決 2.1 設置全局字體 在圖1所示的代碼中&#xff0c;第13…

詳解opencv resize之INTER_LINEAR和INTER_AREA

一。先簡單介紹一下resize的用法 src&#xff1a;輸入圖&#xff0c; dst&#xff1a;輸出圖 dsize&#xff1a;輸出圖的寬高&#xff0c;如果dsize不為空&#xff08;即寬高都不是0&#xff09;&#xff0c;則以dsize為準進行resize。 fx, fy是放大縮小的比例&#xff0c;是…

UnityDemo-TheBrave-制作筆記

這是我跟著b站up主MStudio的視頻學習制作的&#xff0c;大體上沒有去做一些更新的東西&#xff0c;這里只是一個總的總結。在文章的最后&#xff0c;我會放上可以游玩該游戲的鏈接和exe可執行文件&#xff0c;不過沒有對游戲內容進行什么加工&#xff0c;只有基本的功能實現罷了…

使用LSTM預測股票收盤價

在金融數據預測中&#xff0c;LSTM&#xff08;長短期記憶網絡&#xff09;憑借其在時間序列數據建模中的優勢&#xff0c;成為了分析股票價格趨勢的熱門選擇。本篇博客將以完整的代碼實現為例&#xff0c;展示如何利用LSTM網絡對股票收盤價進行預測&#xff0c;并從數據處理到…

模擬SpringIOCAOP

一、IOC容器 Ioc負責創建&#xff0c;管理實例&#xff0c;向使用者提供實例&#xff0c;ioc就像一個工廠一樣&#xff0c;稱之為Bean工廠 1.1 Bean工廠的作用 先分析一下Bean工廠應具備的行為 1、需要一個獲取實例的方法&#xff0c;根據一個參數獲取對應的實例 getBean(…

預編譯SQL

預編譯SQL 預編譯SQL是指在數據庫應用程序中&#xff0c;SQL語句在執行之前已經通過某種機制&#xff08;如預編譯器&#xff09;進行了解析、優化和準備&#xff0c;使得實際執行時可以直接使用優化后的執行計劃&#xff0c;而不需要每次都重新解析和編譯。這么說可能有一些抽…

Centos9 + Docker 安裝 MySQL8.4.0 + 定時備份數據庫到本地

Centos9 + Docker 安裝 MySQL8.4.0 + 定時備份數據庫到本地 創建目錄,創建配置文件啟動容器命令定時備份MySQL執行腳本Linux每日定時任務命令文件內參數其他時間參數AT一次性定時任務創建目錄,創建配置文件 $ mkdir -p /opt/mysql/conf$ vim /opt/mysql/conf/my.cnf[mysql] #…

軟件測試預備知識⑥—搭建Web服務器

在軟件測試的廣闊領域中&#xff0c;搭建Web服務器是一項極為關鍵的技能。它不僅有助于模擬真實的應用環境&#xff0c;方便我們對Web應用進行全面且深入的測試&#xff0c;還能讓測試人員更好地掌控測試場景&#xff0c;提升測試效率與質量。接下來&#xff0c;讓我們一同深入…

計算機視覺算法實戰——打電話行為檢測

?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連? ??????? ??????????????? ?????? ? 1. 引言?? 隨著智能手機的普及&#xff0c;打電話行為檢測成為了計算機視…