欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot中的掃描注解使用詳解

 更新時(shí)間:2025年01月12日 10:32:48   作者:昔我往昔  
為了使Spring Boot應(yīng)用程序能夠掃描并識(shí)別特定或自定義注解,通常的做法是在創(chuàng)建這些注解之后,在配置類中通過@ComponentScan指定基礎(chǔ)包路徑,并設(shè)置過濾條件來包含所需的注解,本文給大家介紹了Spring Boot中的掃描注解如何使用,需要的朋友可以參考下

在 Spring Boot 中,掃描注解是指通過注解來告訴 Spring 框架應(yīng)該掃描哪些包、哪些類或哪些特定的組件,并將其作為 Spring 容器中的 bean 進(jìn)行管理。Spring Boot 主要通過以下幾種注解來實(shí)現(xiàn)自動(dòng)掃描:

  • @ComponentScan
  • @SpringBootApplication
  • @Component
  • @Service
  • @Repository
  • @Controller

這些注解的作用是告訴 Spring 容器掃描哪些類,并將它們注冊(cè)為 Spring Bean。

1. @SpringBootApplication 注解

@SpringBootApplication 是一個(gè)組合注解,它包含了三個(gè)重要的注解:

  • @Configuration:指示該類是一個(gè) Spring 配置類,相當(dāng)于 applicationContext.xml 或 @Configuration。
  • @EnableAutoConfiguration:啟用 Spring Boot 的自動(dòng)配置機(jī)制。
  • @ComponentScan:啟動(dòng)類上通常會(huì)自動(dòng)應(yīng)用 @ComponentScan 注解,指定 Spring Boot 掃描包的位置。

通常,你只需要使用 @SpringBootApplication 注解即可,它會(huì)自動(dòng)啟用組件掃描。

案例:@SpringBootApplication 啟動(dòng)類

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

在這個(gè)示例中,@SpringBootApplication 會(huì)自動(dòng)啟用從 MyApplication 類所在包及其子包的組件掃描。

2. @ComponentScan 注解

@ComponentScan 注解是 Spring 的基礎(chǔ)注解,用于指定 Spring 容器掃描的包。如果你不使用 @SpringBootApplication,可以直接使用 @ComponentScan 來手動(dòng)指定掃描的包。

案例:手動(dòng)配置 @ComponentScan 注解

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

@Configuration
@ComponentScan(basePackages = "com.hk.services")  // 指定掃描 com.hk.services 包
public class AppConfig {
}

在這個(gè)案例中,Spring 容器將只掃描 com.hk.services 包中的所有組件。

3. @Component、@Service、@Repository、@Controller 注解

這些注解標(biāo)記的是 Spring Bean 的不同類型。@Component 是一個(gè)通用的注解,而 @Service、@Repository、@Controller 是它的特化版本,分別用于標(biāo)注服務(wù)層、數(shù)據(jù)訪問層和控制器層的組件。

  • @Component:標(biāo)記一個(gè)通用的 Spring Bean。
  • @Service:用于標(biāo)記服務(wù)層的 Bean。
  • @Repository:用于標(biāo)記數(shù)據(jù)訪問層的 Bean。
  • @Controller:用于標(biāo)記 Web 層(Spring MVC 控制器)的 Bean。

當(dāng)類上標(biāo)注了這些注解后,Spring 會(huì)自動(dòng)將它們注冊(cè)為容器中的 Bean,并進(jìn)行依賴注入。

案例:使用 @Component 和其他特化注解

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Controller;

@Component
public class MyComponent {
    public void doSomething() {
        System.out.println("doSomething!");
    }
}

@Service
public class MyService {
    public void performService() {
        System.out.println("performService...");
    }
}

@Repository
public class MyRepository {
    public void saveData() {
        System.out.println("Saving data...");
    }
}

@Controller
public class MyController {
    public void handleRequest() {
        System.out.println(" request...");
    }
}

在這個(gè)例子中,MyComponentMyService、MyRepository 和 MyController 都會(huì)被 Spring 容器自動(dòng)掃描并注冊(cè)為 Bean。

4. Spring Boot 自動(dòng)配置掃描

在 Spring Boot 中,許多功能(如數(shù)據(jù)庫連接、Web 配置等)是通過 自動(dòng)配置 來實(shí)現(xiàn)的。Spring Boot 會(huì)根據(jù)類路徑中的依賴自動(dòng)配置相關(guān)的功能。這種自動(dòng)配置的掃描也是通過 @ComponentScan 和 @EnableAutoConfiguration 完成的。

例如,如果你的項(xiàng)目中包含了 spring-boot-starter-web 依賴,Spring Boot 會(huì)自動(dòng)啟用相關(guān)的 Web 配置(如嵌入式 Tomcat 的配置)并掃描 @Controller 注解的類。

5. 組件掃描的范圍

默認(rèn)情況下,Spring Boot 會(huì)從主應(yīng)用程序類(通常是標(biāo)有 @SpringBootApplication 注解的類)所在的包及其子包開始掃描。如果你需要改變掃描的范圍,可以通過 @ComponentScan 來指定其他的包。

示例:自定義掃描包的范圍

import org.springframework.context.annotation.ComponentScan;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@ComponentScan(basePackages = "com.hk.custom")  // 自定義掃描包
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

在這個(gè)例子中,Spring 會(huì)掃描 com.hk.custom 包及其子包中的所有 @Component、@Service、@Repository、@Controller 等注解的類。

總結(jié)

  • @SpringBootApplication:啟用自動(dòng)配置、配置類和組件掃描。
  • @ComponentScan:自定義掃描的包或類。
  • @Component、@Service、@Repository@Controller:不同類型的 Spring Bean 注解。
  • 自動(dòng)配置:Spring Boot 自動(dòng)掃描類路徑中的依賴并自動(dòng)配置相關(guān)組件。

這些注解通過掃描和自動(dòng)裝配幫助開發(fā)者輕松管理 Spring 容器中的 Bean,而不需要手動(dòng)注冊(cè)每個(gè) Bean,使得開發(fā)過程更加簡潔和高效。

到此這篇關(guān)于SpringBoot中的掃描注解使用詳解的文章就介紹到這了,更多相關(guān)SpringBoot掃描注解使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java基礎(chǔ)之內(nèi)存泄漏與溢出詳解

    Java基礎(chǔ)之內(nèi)存泄漏與溢出詳解

    今天帶大家來了解一下Java內(nèi)存泄漏與溢出的知識(shí),文中有非常詳細(xì)的介紹,對(duì)正在學(xué)習(xí)Java基礎(chǔ)的各位小伙伴呢很有幫助喲,需要的朋友可以參考下
    2021-05-05
  • IDEA JarEditor編輯jar包方式(直接新增,修改,刪除jar包內(nèi)的class文件)

    IDEA JarEditor編輯jar包方式(直接新增,修改,刪除jar包內(nèi)的class文件)

    文章主要介紹了如何使用IDEA的JarEditor插件直接修改jar包內(nèi)的class文件,而不需要手動(dòng)解壓、反編譯和重新打包,通過該插件,可以更方便地進(jìn)行jar包的修改和測試
    2025-01-01
  • IntelliJ IDEA 部署 Web 項(xiàng)目,看這一篇夠了!

    IntelliJ IDEA 部署 Web 項(xiàng)目,看這一篇夠了!

    這篇文章主要介紹了IntelliJ IDEA 部署 Web 項(xiàng)目的圖文教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • IDEA 2020.1.1好用的plugins插件推薦

    IDEA 2020.1.1好用的plugins插件推薦

    這篇文章主要介紹了IDEA 2020.1.1好用的plugins插件推薦,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • jetty運(yùn)行時(shí)無法保存文件的解決方法

    jetty運(yùn)行時(shí)無法保存文件的解決方法

    這篇文章主要為大家詳細(xì)介紹了jetty運(yùn)行時(shí)無法保存文件的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Java如何使用正則表達(dá)式從字符串中提取數(shù)字

    Java如何使用正則表達(dá)式從字符串中提取數(shù)字

    這篇文章主要介紹了Java如何使用正則表達(dá)式從字符串中提取數(shù)字問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java中dart類詳細(xì)講解

    java中dart類詳細(xì)講解

    這篇文章主要介紹了dart類詳細(xì)講解,實(shí)例講解的很清晰,有對(duì)于這方面不太清楚的同學(xué)可以跟著學(xué)習(xí)下
    2021-02-02
  • JDBC連接mysql亂碼異常問題處理總結(jié)

    JDBC連接mysql亂碼異常問題處理總結(jié)

    這篇文章主要介紹了JDBC連接mysql亂碼異常問題處理的辦法和思路,有需要的朋友參考學(xué)習(xí)下。
    2017-12-12
  • 使用Java實(shí)現(xiàn)文件流轉(zhuǎn)base64

    使用Java實(shí)現(xiàn)文件流轉(zhuǎn)base64

    這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)文件流轉(zhuǎn)base64效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • Java中的輸出格式化問題小結(jié)

    Java中的輸出格式化問題小結(jié)

    在Java中,System.out.printf方法用于格式化輸出,格式化字符串`%.6f`表示浮點(diǎn)數(shù)保留6位小數(shù),其他格式化選項(xiàng)包括`%d`(整數(shù))、`%s`(字符串)和`%e`(科學(xué)計(jì)數(shù)法),示例代碼展示了如何使用這些格式化選項(xiàng),感興趣的朋友一起看看吧
    2025-02-02

最新評(píng)論