SpringBoot中的@Configuration、@MapperScan注解
SpringBoot中的@Configuration、@MapperScan注解
1、@Configuration注解
- @Configuration注解用于標(biāo)記一個類為配置類,表示該類包含一個或多個@Bean方法,這些方法返回的實例會被Spring容器管理。
- 配置類替代了傳統(tǒng)的XML配置文件,使得配置更加簡潔和類型安全
使用方式:
- 在需要定義Bean的類上添加@Configuration注解
- 在類中使用@Bean注解的方法來定義和初始化Bean
示例:
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}使用場景:
- 當(dāng)需要定義和管理多個Bean時,使用@Configuration注解的類來集中管理這些Bean。
- 替代XML配置文件,使配置更加簡潔和易于維護(hù)。
底層原理:
@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 {
// 其他配置
}使用場景:
- 當(dāng)項目中有多個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 注解:
- 功能:標(biāo)記一個類為配置類,包含
@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)文章
關(guān)于ApplicationContext的三個常用實現(xiàn)類
這篇文章主要介紹了關(guān)于ApplicationContext的三個常用實現(xiàn)類,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
Spring如何消除代碼中的if-else/switch-case
這篇文章主要給大家介紹了關(guān)于Spring如何消除代碼中if-else/switch-case的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Spring具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Java對象初始化過程代碼塊和構(gòu)造器的調(diào)用順序
這篇文章主要介紹了Java對象初始化過程代碼塊和構(gòu)造器的調(diào)用順序,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08
詳解maven的setting配置文件中mirror和repository的區(qū)別
這篇文章主要介紹了詳解maven的setting配置文件中mirror和repository的區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12
MybatisPlus字段類型轉(zhuǎn)換的實現(xiàn)示例
本文主要介紹了MybatisPlus如何完成字段類型轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
關(guān)于JSqlparser使用攻略(高效的SQL解析工具)
這篇文章主要介紹了關(guān)于JSqlparser使用攻略(高效的SQL解析工具),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11

