SpringBoot复习:(20)如何把bean手动注册到容器?

这篇具有很好参考价值的文章主要介绍了SpringBoot复习:(20)如何把bean手动注册到容器?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

可以通过实现BeanDefinitionRegistryPostProcessor接口,它的父接口是BeanFactoryPostProcessor.
步骤:
一、自定义一个组件类:

package com.example.demo.service;


public class MusicService {
    public MusicService() {
        System.out.println("music service constructed!");
    }
}

二、定义类实现BeanDefinitionRegistryPostProcessor:

package com.example.demo.component;

import com.example.demo.service.MusicService;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.stereotype.Component;

@Component
public class MyBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor {

    @Override
    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
        System.out.println(registry.getBeanDefinitionCount());
        //定义BeanDefinition对象
        RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(MusicService.class);
        //将BeanDefinition对象注册到容器
        registry.registerBeanDefinition("musicBean", rootBeanDefinition);
    }

    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
        System.out.println( beanFactory.getBeanDefinitionCount() );
    }
}

通过@Component注解,Spring就能够扫描到MyBeanDefinitionRegistryPostProcessor,也就能够把MusicService这个组件注册到容器。
三、可以获取在容器中通过MyBeanDefinitionRegistryPostProcessor注册的bean文章来源地址https://www.toymoban.com/news/detail-628688.html

package com.example.demo;

import com.example.demo.service.MusicService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.PropertySource;

@SpringBootApplication
@PropertySource("classpath:my.properties")
public class DemoApplication {

	public static void main(String[] args) {
		ConfigurableApplicationContext context = SpringApplication.run(DemoApplication.class, args);
		System.out.println("abc");

		MusicService musicService = context.getBean("musicBean", MusicService.class);
		System.out.println(musicService);

	}

}

到了这里,关于SpringBoot复习:(20)如何把bean手动注册到容器?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring 容器原始 Bean 是如何创建的?

    以下内容基于 Spring6.0.4。 这个话题其实非常庞大,我本来想从 getBean 方法讲起,但一想这样讲完估计很多小伙伴就懵了,所以我们还是一步一步来,今天我主要是想和小伙伴们讲讲 Spring 容器创建 Bean 最最核心的 createBeanInstance 方法,这个方法专门用来创建一个原始 Bean 实例

    2024年02月14日
    浏览(33)
  • spring注册bean和注入bean的方法

    一个对象加入到Spring容器中。 XML配置方式 @Component注解@Controler、@Service、@Repository + @ComponentScan包扫描方式 @Configuration + @Bean方式 @Import方式 @Import + ImportSelector方式 @Import + ImportBeanDefinitionRegistrar方式 FactoryBean方式 BeanDefinitionRegistryPostProcessor方式 BeanFactoryPostProcessor方式 参考:添

    2024年02月15日
    浏览(36)
  • spring复习:(18)给bean的属性赋值

    类: AbstractAutowireCapableBeanFactory: 其中populateBean用来用我们配置文件里的属性来给bean的属性赋值: 其中applyPropertyValues(beanName, mbd, bw, pvs);真正进行了赋值. 其中调用了bw.setPropertyValues:,代码: setPropertyValues代码: 其中调用了:setPropertyValue(pv);这个方法的代码: 调用setPropertyVal

    2024年02月16日
    浏览(33)
  • SpringBoot复习:(45)@Component定义的bean会被@Bean定义的同名的bean覆盖

    有同名的bean需要配置: spring.main.allow-bean-definition-overriding=true 否则报错。 运行结果

    2024年02月13日
    浏览(31)
  • SpringBoot 底层机制分析【Tomcat 启动+Spring 容器初始化+Tomcat 如何关联Spring 容器】【下】

    😀前言 本篇博文是关于SpringBoot 底层机制分析实现,希望能够帮助你更好的了解SpringBoot 😊 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉 💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客

    2024年02月13日
    浏览(42)
  • spring注解驱动开发(BEAN注册方式与生命周期)

    目录 容器中注册BEAN的方式 BEAN生命周期 包扫描+组件标注注解 @ComponentScan(basePackages = {\\\"com.an.spring.condition\\\"}) @Service @Component @Controller @Repository @BEan方式【导入第三方包里面的组件】 @Import快速给容器中导入一个组件。 1)、@IMport(要导入到容器中的组件),容器就会注入这个组

    2024年02月07日
    浏览(53)
  • 关于Spring Bean容器的理解

    Spring Bean 对象 Spring Bean 是Spring框架中的一个核心概念。在Spring框架中,Bean是指那些组成应用程序的对象,它们由Spring IoC容器实例化、组装和管理。Bean是一个被实例化、组装和由Spring IoC容器所管理的对象。 Spring Bean 容器 Spring Bean容器是Spring框架的核心部分,负责管理应用程

    2024年01月16日
    浏览(40)
  • spring复习:(35)在getBean时,在哪里根据普通bean和工厂bean进行区分处理来返回的?

    在AbstractBeanFactory的doGetBean方法: 调用的getObjectForBeanInstance方法部分代码如下: 如果不是工厂bean,则直接将实例返回,否则调用getObjectFromFactoryBean方法获取工厂bean的getObject方法返回的对象 其中调用了doGetObjectFromFactoryBean方法,代码如下: 可以看到工厂bean的getObject方法被调用

    2024年02月16日
    浏览(43)
  • spring高级源码50讲-1-8(spring容器与bean)

    1) 容器接口 BeanFactory 接口,典型功能有: getBean ApplicationContext 接口,是 BeanFactory 的子接口。它扩展了 BeanFactory 接口的功能,如: 国际化 通配符方式获取一组 Resource 资源 整合 Environment 环境(能通过它获取各种来源的配置信息) 事件发布与监听,实现组件之间的解耦 可以

    2024年02月10日
    浏览(31)
  • Spring——Bean注入几种方式(放入容器)

    个人博客: 全是干货,相信不会让你失望 1.XML方式注入 在现在这个Springboot横行的年代,以XML来注入的方式可能已经不多见了,因为压根用不着,但毕竟是注入方式之一也得提一提,这种方式就是依赖于XML的解析来获取我们需要注入的Bean对象 常见的方式有:set方法注入、构

    2024年02月01日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包