最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot中的@Configuration、@MapperScan注解

 更新時間:2024年11月09日 11:53:37   作者:楠尋尋  
SpringBoot中的@Configuration和@MapperScan注解分別用于配置類和Mapper接口的自動掃描,感興趣的朋友跟隨小編一起看看吧

SpringBoot中的@Configuration、@MapperScan注解

1、@Configuration注解

  • @Configuration注解用于標記一個類為配置類,表示該類包含一個或多個@Bean方法,這些方法返回的實例會被Spring容器管理。
  • 配置類替代了傳統(tǒng)的XML配置文件,使得配置更加簡潔和類型安全

使用方式:

  • 在需要定義Bean的類上添加@Configuration注解
  • 在類中使用@Bean注解的方法來定義和初始化Bean

示例:

@Configuration
public class AppConfig {
    @Bean
    public MyService myService() {
        return new MyServiceImpl();
    }
}

使用場景:

  • 當需要定義和管理多個Bean時,使用@Configuration注解的類來集中管理這些Bean。
  • 替代XML配置文件,使配置更加簡潔和易于維護。

底層原理:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
    @AliasFor(
        annotation = Component.class
    )
    String value() default "";
    boolean proxyBeanMethods() default true;
}
  • @Configuration注解的類會被Spring容器識別,并且類中的@Bean方法會調(diào)用,返回的實例會被注冊到Spring容器中。
  • @Configuration類會被編譯成一個代理類,確保@Bean方法的調(diào)用是線程安全的,并且可以支持方法間的依賴注入。

@Configuration 注解的底層原理:

Spring 容器啟動:Spring 容器啟動時,會掃描帶有 @Configuration 注解的類。

  • 解析 @Configuration 類:創(chuàng)建并注冊配置類實例到容器。
  • 解析 @Configuration 類中的 @Bean 方法:創(chuàng)建并注冊 @Bean 方法定義的 Bean 到容器。
  • 初始化 Configuration 類中的 Bean:初始化配置類中的 Bean。
  • 配置完成:配置完成。

2、@MapperScan注解

  • @MapperScan注解用于掃描指定包下的所有Mapper接口,并將它們注冊為Spring管理的Bean
  • 常用與Mybatis框架中,自動掃描并注冊Mapper接口,避免手動在每個Mapper接口中添加@Mapper注解

使用方式:

在配置類上添加@MapperScan注解,并指定需要掃描的包路徑。

示例:

@Configuration
@MapperScan("com.briup.*.mapper")
public class MyBatisConfig {
    // 其他配置
}

使用場景:

  • 當項目中有多個Mapper接口時,使用@MapperScan注解可以一次性掃描并注冊所有的Mapper接口,避免在每個接口上手動添加@Mapper注解。
  • 適用于使用Mybatis框架的項目,簡化Mapper接口的管理。

底層原理:

 
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Import({MapperScannerRegistrar.class})
@Repeatable(MapperScans.class)
public @interface MapperScan {
    String[] value() default {};
    String[] basePackages() default {};
    Class<?>[] basePackageClasses() default {};
    Class<? extends BeanNameGenerator> nameGenerator() default BeanNameGenerator.class;
    Class<? extends Annotation> annotationClass() default Annotation.class;
    Class<?> markerInterface() default Class.class;
    String sqlSessionTemplateRef() default "";
    String sqlSessionFactoryRef() default "";
    Class<? extends MapperFactoryBean> factoryBean() default MapperFactoryBean.class;
    String lazyInitialization() default "";
    String defaultScope() default "";
}
  • @MapperScan注解通過ClassPathMapperScanner類來掃描指定包下的所有接口。
  • @ClassPathMapperScanner會查找所有帶有@Mapper注解的接口,并將它們注冊為Spring管理的Bean

注冊的Bean會配置為Mybatis的SqlSessionTemplate或SqlSessionDaoSupport的代理對象,從而可以在業(yè)務(wù)邏輯中直接使用這些Mapper接口。

@MapperScan 注解的底層原理:

  • Spring 容器啟動:Spring 容器啟動時,會掃描帶有 @MapperScan 注解的類。
  • 解析 @MapperScan 注解:掃描指定包下的 Mapper 接口。
  • 創(chuàng)建并注冊 Mapper 接口的實現(xiàn)類到容器:創(chuàng)建并注冊 Mapper 接口的實現(xiàn)類到容器。
  • 初始化 Mapper 實現(xiàn)類:初始化 Mapper 實現(xiàn)類。
  • 配置完成:配置完成。

總結(jié):

@Configuration 注解:

  • 功能:標記一個類為配置類,包含 @Bean 方法。
  • 使用方式:在類上添加 @Configuration 注解,類中使用 @Bean 注解的方法定義 Bean。
  • 使用場景:集中管理多個 Bean,替代 XML 配置文件。
  • 底層原理:類被編譯成代理類,@Bean 方法被調(diào)用,返回的實例注冊到 Spring 容器中。

@MapperScan 注解:

  • 功能:掃描指定包下的所有 Mapper 接口,并注冊為 Spring 管理的 Bean。
  • 使用方式:在配置類上添加 @MapperScan 注解,指定需要掃描的包路徑。
  • 使用場景:簡化 MyBatis 框架中 Mapper 接口的管理,避免手動添加 @Mapper 注解。
  • 底層原理:通過 ClassPathMapperScanner 類掃描接口并注冊為 Spring 管理的 Bean。

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

您可能感興趣的文章:

相關(guān)文章

  • 用Java進行zip文件壓縮與解壓縮

    用Java進行zip文件壓縮與解壓縮

    這篇文章主要介紹了用Java進行zip文件壓縮與解壓縮的方法,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • Java實現(xiàn)獲取指定個數(shù)的不同隨機數(shù)

    Java實現(xiàn)獲取指定個數(shù)的不同隨機數(shù)

    今天小編就為大家分享一篇關(guān)于Java實現(xiàn)獲取指定個數(shù)的不同隨機數(shù),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Spring?Boot中使用Spring?MVC的示例解析

    Spring?Boot中使用Spring?MVC的示例解析

    MVC?是一種常見的軟件設(shè)計模式,用于分離應(yīng)用程序的不同部分以實現(xiàn)松散耦合和高內(nèi)聚性,這篇文章主要介紹了如何在Spring?Boot中使用Spring?MVC,需要的朋友可以參考下
    2023-04-04
  • 計算機編程語言發(fā)展史

    計算機編程語言發(fā)展史

    這篇文章主要介紹了Java計算機編程語言發(fā)展史,編程語言?可以簡單的理解為一種計算機和人都能識別的語言。一種計算機語言讓程序員能夠準確地定義計算機所需要使用的數(shù)據(jù),并精確地定義在不同情況下所應(yīng)當采取的行動,下面詳細內(nèi)容,需要的小伙伴可以參考一下
    2022-01-01
  • Spring Boot集成Druid數(shù)據(jù)庫連接池

    Spring Boot集成Druid數(shù)據(jù)庫連接池

    這篇文章主要介紹了Spring Boot集成Druid數(shù)據(jù)庫連接池,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Java中Queue的poll()和remove()區(qū)別詳解

    Java中Queue的poll()和remove()區(qū)別詳解

    這篇文章主要介紹了Java中Queue的poll()和remove()區(qū)別詳解,Queue接口提供了許多方法,其中poll()和remove()是兩個常用的方法,它們的區(qū)別在于,當隊列為空時,poll()方法返回null,而remove()方法會拋出,需要的朋友可以參考下
    2023-07-07
  • Java實現(xiàn)企業(yè)微信消息推送功能的詳細步驟

    Java實現(xiàn)企業(yè)微信消息推送功能的詳細步驟

    這篇文章主要介紹了Java實現(xiàn)企業(yè)微信消息推送功能,本文圖文實例代碼相結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • SpringCloud中使用Sentinel實現(xiàn)限流的實戰(zhàn)

    SpringCloud中使用Sentinel實現(xiàn)限流的實戰(zhàn)

    限流在很多地方都可以使用的到,本篇博客將介紹如何使用SpringCloud中使用Sentinel實現(xiàn)限流,從而達到服務(wù)降級的目的,感興趣的可以了解一下
    2022-01-01
  • SpringMVC整合SSM實現(xiàn)異常處理器詳解

    SpringMVC整合SSM實現(xiàn)異常處理器詳解

    SpringMVC是一種基于Java,實現(xiàn)了Web MVC設(shè)計模式,請求驅(qū)動類型的輕量級Web框架,即使用了MVC架構(gòu)模式的思想,將Web層進行職責解耦?;谡埱篁?qū)動指的就是使用請求-響應(yīng)模型,框架的目的就是幫助我們簡化開發(fā),SpringMVC也是要簡化我們?nèi)粘eb開發(fā)
    2022-10-10
  • 淺談hashmap為什么查詢時間復(fù)雜度為O(1)

    淺談hashmap為什么查詢時間復(fù)雜度為O(1)

    這篇文章主要介紹了hashmap為什么查詢時間復(fù)雜度為O(1),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評論

当阳市| 武夷山市| 泸定县| 新丰县| 泸西县| 蒙城县| 建瓯市| 宁波市| 苍梧县| 澎湖县| 五河县| 富锦市| 屯昌县| 肥乡县| 马龙县| 南郑县| 连江县| 远安县| 依兰县| 三河市| 巴林左旗| 宿州市| 阿图什市| 石渠县| 安国市| 都昌县| 镇坪县| 辽阳市| 碌曲县| 衡南县| 三江| 白沙| 固原市| 北川| 瓮安县| 衡东县| 威海市| 本溪| 漳浦县| 无为县| 贵德县|