SpringBoot SpringBoot 原理篇 1 自动配置 1.9 bean 的加载方式【七】
创始人
2024-02-18 06:17:50

SpringBoot

【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】

SpringBoot 原理篇

文章目录

      • SpringBoot
      • SpringBoot 原理篇
      • 1 自动配置
        • 1.9 bean 的加载方式【七】
          • 1.9.1 ImportBeanDefinitionRegistrar

1 自动配置

1.9 bean 的加载方式【七】

1.9.1 ImportBeanDefinitionRegistrar

之前我们又讲了第六种 ImportSelector ,通过实现这个接口去查某一个东西的“户口”

在这里插入图片描述

现在来说说第七种,这种方式又要复杂一些,高端一些

【直接开干】

来一个新的类

package com.dingjiaxiong.bean;import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;/*** ClassName: MyRegistrar* date: 2022/10/24 16:24** @author DingJiaxiong*/public class MyRegistrar implements ImportBeanDefinitionRegistrar {//第一个参数就是我们之前看的元数据,而且他还有一个参数,也就是这种方式比第六种更强大@Overridepublic void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {}
}

以前我们第六种的时候

返回

在这里插入图片描述

是用的全路径类名

第七种方式就不用了,靠的就是registry 这个对象来帮我们初始化bean

package com.dingjiaxiong.bean;import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;/*** ClassName: MyRegistrar* date: 2022/10/24 16:24** @author DingJiaxiong*/public class MyRegistrar implements ImportBeanDefinitionRegistrar {//第一个参数就是我们之前看的元数据,而且他还有一个参数,也就是这种方式比第六种更强大@Overridepublic void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {//1. 使用元数据进行判定【这里就不判了】//初始化BeanDefinition对象BeanDefinition beanDefinition = BeanDefinitionBuilder.rootBeanDefinition(Dog.class).getBeanDefinition();registry.registerBeanDefinition("yellow",beanDefinition);}
}

OK,再来一个配置类

package com.dingjiaxiong.config;import com.dingjiaxiong.bean.MyImportSelector;
import com.dingjiaxiong.bean.MyRegistrar;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;/*** ClassName: SpringConfig7* date: 2022/10/24 14:52** @author DingJiaxiong*/@Import(MyRegistrar.class)
public class SpringConfig7 {
}

OK。来一个运行类

package com.dingjiaxiong.app;import com.dingjiaxiong.config.SpringConfig6;
import com.dingjiaxiong.config.SpringConfig7;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;/*** ClassName: App7* date: 2022/10/24 13:42** @author DingJiaxiong*/public class App7 {public static void main(String[] args) {ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig7.class);String[] names = ctx.getBeanDefinitionNames();for (String name : names) {System.out.println(name);}System.out.println("=========================");}}

直接运行

在这里插入图片描述

我超,出来了【这就又实现了对bean 的管理,更高端牛逼了】

OK,回顾一下

导入实现了ImportBeanDefinitionRegistrar接口的类,通过BeanDefinition的注册器注册实名bean,实现对
容器中bean的裁定,例如对现有bean的覆盖,进而达成不修改源代码的情况下更换实现的效果

在这里插入图片描述

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...