日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Spring擴展點之ImportBeanDefinitionRegistrar

來源: 責編: 時間:2023-09-28 10:03:46 349觀看
導讀一、是什么?查看接口注釋:根據(jù)給定的注釋元數(shù)據(jù),根據(jù)需要注冊bean定義......spring會遍歷所有的beanDefinition,逐個創(chuàng)建對應的bean。public interface ImportBeanDefinitionRegistrar { /** * Register bean definition

CGi28資訊網(wǎng)——每日最新資訊28at.com

一、是什么?

查看接口注釋:根據(jù)給定的注釋元數(shù)據(jù),根據(jù)需要注冊bean定義......spring會遍歷所有的beanDefinition,逐個創(chuàng)建對應的bean。CGi28資訊網(wǎng)——每日最新資訊28at.com

public interface ImportBeanDefinitionRegistrar {	/**	 * Register bean definitions as necessary based on the given annotation metadata of	 * the importing {@code @Configuration} class.......(截取部分注釋)	 */	default void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry,			BeanNameGenerator importBeanNameGenerator) {		registerBeanDefinitions(importingClassMetadata, registry);	}	default void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {	}}

PS:創(chuàng)建bean還有哪些方式?CGi28資訊網(wǎng)——每日最新資訊28at.com

1、@Component、@Bean等等2、@Import(導入類)3、實現(xiàn)ImportSelector接口,重寫selectImports方法,返回需要導入的全類名4、實現(xiàn)ImportBeanDefinitionRegistrar接口,注冊bean定義

二、demo案例

StudentBean:學生類。CGi28資訊網(wǎng)——每日最新資訊28at.com

public class StudentBean {    private String stuName;    public String getStuName() {        return stuName;    }    public void setStuName(String stuName) {        this.stuName = stuName;    }}

StudentImportBeanDefinitionRegistrar:實現(xiàn)ImportBeanDefinitionRegistrar接口。CGi28資訊網(wǎng)——每日最新資訊28at.com

@Componentpublic class StudentImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {    @Override    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {        // 創(chuàng)建beanDefinitionBuilder        BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(StudentBean.class);        beanDefinitionBuilder.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE);        // 獲取beanDefinition        AbstractBeanDefinition beanDefinition = beanDefinitionBuilder.getBeanDefinition();        BeanDefinitionHolder beanDefinitionHolder = new BeanDefinitionHolder(beanDefinition, StudentBean.class.getSimpleName());        // 注冊beanDefinition        BeanDefinitionReaderUtils.registerBeanDefinition(beanDefinitionHolder, registry);    }}

啟動類:使用@Import導入StudentImportBeanDefinitionRegistrar類。CGi28資訊網(wǎng)——每日最新資訊28at.com

@Import(StudentImportBeanDefinitionRegistrar.class)@SpringBootApplicationpublic class DemoApplication {    public static void main(String[] args) {        ConfigurableApplicationContext applicationContext = SpringApplication.run(DemoApplication.class, args);        StudentBean studentBean = applicationContext.getBean(StudentBean.class);        System.out.println("studentBean: " + studentBean);    }}

CGi28資訊網(wǎng)——每日最新資訊28at.com

我們大都習慣使用@Enable***方式引入某個組件,此處可稍作改造。CGi28資訊網(wǎng)——每日最新資訊28at.com

新增注解:EnableStudentBean。CGi28資訊網(wǎng)——每日最新資訊28at.com

@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(StudentImportBeanDefinitionRegistrar.class)public @interface EnableStudentBean {}

啟動類修改:CGi28資訊網(wǎng)——每日最新資訊28at.com

@EnableStudentBean@SpringBootApplicationpublic class DemoApplication {    public static void main(String[] args) {        ConfigurableApplicationContext applicationContext = SpringApplication.run(DemoApplication.class, args);        StudentBean studentBean = applicationContext.getBean(StudentBean.class);        System.out.println("studentBean: " + studentBean);    }}

三、ImportBeanDefinitionRegistrar在其他開源項目中的使用

mybatis

在使用mybatis時,我們需要指定mapper的掃描路徑:CGi28資訊網(wǎng)——每日最新資訊28at.com

@MapperScan(basePackages = "com.test.demo.dao.mapper")

查看@MapperScan源碼,發(fā)現(xiàn)導入了MapperScannerRegistrar類,該類實現(xiàn)了ImportBeanDefinitionRegistrar接口。CGi28資訊網(wǎng)——每日最新資訊28at.com

@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(MapperScannerRegistrar.class)@Repeatable(MapperScans.class)public @interface MapperScan

MapperScannerRegistrar類(截取部分代碼):CGi28資訊網(wǎng)——每日最新資訊28at.com

public class MapperScannerRegistrar implements ImportBeanDefinitionRegistrar {  @Override  public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {    // 獲取MapperScan注解    AnnotationAttributes mapperScanAttrs = AnnotationAttributes        .fromMap(importingClassMetadata.getAnnotationAttributes(MapperScan.class.getName()));    if (mapperScanAttrs != null) {      // 掃描對應的mapper接口,并注冊BeanDefinition(bean定義)      registerBeanDefinitions(importingClassMetadata, mapperScanAttrs, registry,          generateBaseBeanName(importingClassMetadata, 0));    }  }}

Openfeign

在使用OpenFeign時,我們需要指定feign接口掃描路徑:CGi28資訊網(wǎng)——每日最新資訊28at.com

@EnableFeignClients(basePackages = ""com.test.demo")

查看@EnableFeignClients源碼,發(fā)現(xiàn)導入了FeignClientsRegistrar類,該類實現(xiàn)了ImportBeanDefinitionRegistrar接口。CGi28資訊網(wǎng)——每日最新資訊28at.com

@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(FeignClientsRegistrar.class)public @interface EnableFeignClients

FeignClientsRegistrar類(截取部分代碼):CGi28資訊網(wǎng)——每日最新資訊28at.com

class FeignClientsRegistrar	implements ImportBeanDefinitionRegistrar {	@Override	public void registerBeanDefinitions(AnnotationMetadata metadata,BeanDefinitionRegistry registry) {		registerDefaultConfiguration(metadata, registry);    registerFeignClients(metadata, registry);	}}

掃描所有加了@FeignClient注解的接口,接著注冊FeignClientFactoryBean類型的BeanDefinition到容器中,需要使用時生成具體的接口代理實現(xiàn)服務調(diào)用。CGi28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-11778-0.htmlSpring擴展點之ImportBeanDefinitionRegistrar

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Java中數(shù)據(jù)共享和同步問題,導致線程安全性問題和競態(tài)條件

下一篇: Python Qt6 真的值得學習嗎?看看這些你就知道了!

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产精品社区| 久久亚洲精品中文字幕冲田杏梨| 亚洲国产影院| 99av国产精品欲麻豆| 99国产精品99久久久久久| 亚洲一区二区三区成人在线视频精品| 亚洲欧美日韩国产另类专区| 久久久久国产精品www| 欧美激情中文不卡| 欧美性猛交xxxx免费看久久久 | 米奇777超碰欧美日韩亚洲| 欧美激情视频网站| 国产精品自在欧美一区| 亚洲成色www久久网站| 中国成人黄色视屏| 久久久久久免费| 欧美精品999| 国产亚洲精品激情久久| 亚洲精品国产精品国自产观看浪潮| 亚洲影院色无极综合| 免费美女久久99| 国产伦精品一区二区三区视频黑人 | 欧美顶级艳妇交换群宴| 国产精品一区二区久激情瑜伽| 在线日韩精品视频| 亚洲欧美日韩成人| 欧美精品激情在线| 国产一区日韩二区欧美三区| 夜夜嗨av色一区二区不卡| 久久久久**毛片大全| 欧美特黄视频| 在线免费观看日韩欧美| 亚洲欧美视频在线观看视频| 欧美精品免费在线| 狠狠做深爱婷婷久久综合一区| 亚洲午夜极品| 欧美国产日韩视频| 激情懂色av一区av二区av| 亚洲综合色视频| 欧美日韩精品免费| 亚洲国产精品高清久久久| 亚洲欧美影院| 欧美深夜影院| 亚洲精品欧美日韩专区| 久久影视精品| 国模精品娜娜一二三区| 午夜精品免费| 欧美视频在线观看 亚洲欧| 亚洲第一页自拍| 久久aⅴ国产欧美74aaa| 国产精品久久久久久久久久久久| 亚洲精品孕妇| 欧美va亚洲va日韩∨a综合色| 国产亚洲欧洲一区高清在线观看| 亚洲一区二区三区三| 欧美美女bbbb| 亚洲黄色影片| 麻豆精品精华液| 在线成人亚洲| 久久久在线视频| 国产一区二区日韩精品| 性欧美1819sex性高清| 国产精品免费网站在线观看| 一区二区国产在线观看| 欧美日本一区二区三区| 亚洲精品黄色| 欧美金8天国| 亚洲精品一区二区网址| 欧美激情精品久久久久久黑人| 亚洲第一福利在线观看| 久久伊伊香蕉| 1024亚洲| 欧美成人高清| 亚洲欧洲一区二区三区| 欧美黄色aa电影| 亚洲精品一区二区在线观看| 欧美激情第3页| 99国产精品99久久久久久粉嫩| 欧美精品国产一区二区| 99精品国产福利在线观看免费| 欧美日本久久| 一本大道久久a久久精品综合 | 欧美三级日韩三级国产三级| 99视频在线精品国自产拍免费观看 | 日韩视频免费观看高清在线视频| 欧美aⅴ一区二区三区视频| 亚洲国产精品va在线观看黑人| 另类尿喷潮videofree| 亚洲高清久久久| 欧美激情在线观看| 日韩亚洲欧美成人| 欧美婷婷在线| 亚洲欧美亚洲| 国产一区欧美| 免费久久精品视频| 亚洲品质自拍| 欧美三级午夜理伦三级中视频| 亚洲天堂成人在线视频| 国产精品亚洲一区| 久久国产精品免费一区| 亚洲第一黄网| 欧美久久视频| 亚洲综合国产精品| 国产综合18久久久久久| 免费在线日韩av| 99在线观看免费视频精品观看| 欧美午夜电影网| 久久av在线看| 91久久精品www人人做人人爽 | 欧美日韩一区二区三区在线看| 亚洲小少妇裸体bbw| 国产视频丨精品|在线观看| 狼人天天伊人久久| 99这里只有精品| 国产日韩欧美在线一区| 免费亚洲网站| 亚洲一区一卡| 红桃视频国产精品| 欧美日韩第一区日日骚| 午夜激情久久久| 亚洲电影自拍| 国产精品久久久久久久久久久久久久 | 午夜性色一区二区三区免费视频| 国内精品美女av在线播放| 欧美激情第3页| 亚洲欧美日韩视频二区| 在线观看欧美激情| 欧美婷婷久久| 老巨人导航500精品| 亚洲一区二区三区激情| 狠狠综合久久av一区二区老牛| 欧美精品日韩一区| 欧美尤物巨大精品爽| 亚洲精品美女在线| 国产日韩欧美高清| 欧美另类视频在线| 久久国产精品久久精品国产| 亚洲精品乱码久久久久久久久| 国产精品尤物福利片在线观看| 免费成人小视频| 先锋资源久久| av成人天堂| 在线观看亚洲一区| 国产精品专区h在线观看| 欧美激情在线观看| 久久久久久久国产| 亚洲尤物在线| 亚洲精品中文字幕在线| 国产综合网站| 国产精品美女一区二区在线观看| 女人色偷偷aa久久天堂| 欧美一级免费视频| 一区二区高清| 亚洲国产欧美一区| 韩国一区二区三区美女美女秀| 欧美日韩精品二区| 另类激情亚洲| 欧美在线观看一区二区| 亚洲午夜精品在线| 亚洲精品美女久久7777777| 激情成人av在线| 国产精品一区二区久久国产| 欧美日韩亚洲精品内裤| 欧美成人自拍| 久久久97精品| 性做久久久久久免费观看欧美 | 国产精品99久久99久久久二8| 影音先锋欧美精品| 国产日韩欧美一二三区| 欧美视频四区| 欧美黄色一区二区| 老司机午夜精品| 久久疯狂做爰流白浆xx| 亚洲自啪免费| 亚洲午夜精品福利| 一本大道久久精品懂色aⅴ| 亚洲黄色一区| 亚洲国产视频直播| 在线观看日韩一区| 国产主播精品| 国产日韩精品一区二区浪潮av| 国产精品v亚洲精品v日韩精品| 欧美精品三级| 欧美黑人在线观看| 欧美国产亚洲视频| 欧美大片在线观看一区二区| 久热国产精品视频| 老色批av在线精品| 久久综合九色99| 久久午夜视频| 久久综合九九| 免费成人网www| 免费不卡欧美自拍视频| 另类春色校园亚洲| 免费成人美女女| 欧美高清在线| 欧美精品一区在线| 欧美精品不卡| 欧美区在线观看| 欧美日韩的一区二区| 欧美日韩亚洲在线| 欧美丝袜一区二区三区| 国产精品av免费在线观看| 国产精品久久久久aaaa|