SpringBoot运行时注入一个Bean

描述

使用GenericApplicationContext类的registerBean方法可以在项目运行时注入一个bean,获取GenericApplicationContext可以继承ApplicationContextAware,重写setApplicationContext,里面的参数就是ApplicationContext。

继承ApplicationContextAware

java 复制代码
@RestController
@RequestMapping("/register/bean")
public class RegisterBeanController implements ApplicationContextAware {

    private ApplicationContext applicationContext;

    // AnnotationConfigServletWebServerApplicationContext
    @GetMapping("/example")
    public String registerBean() {
        GenericApplicationContext genericApplicationContext = (GenericApplicationContext) this.applicationContext;
        // ExampleBean没有使用任何的Component注解。
        genericApplicationContext.registerBean("ExampleBean", ExampleBean.class);
        ExampleBean exampleBean = (ExampleBean) applicationContext.getBean("ExampleBean");
        return exampleBean.getBeanData().getName();
    }


    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }
}

BeanData

java 复制代码
@Component
public class BeanData {
    public String getName() {
        return "BeanData";
    }
}

ExampleBean

测试@Autowrite是否生效。

java 复制代码
public class ExampleBean {
    private String name;
	
    @Autowired
    private BeanData beanData;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public BeanData getBeanData() {
        return beanData;
    }
}
相关推荐
小帅学编程10 分钟前
Maven
java·maven
悟能不能悟35 分钟前
在 MyBatis 的xml中,什么时候大于号和小于号可以不用转义
xml·java·mybatis
hqxstudying36 分钟前
深入解析 Java List 实现类的底层原理
java·数据结构·算法·链表
猫头虎40 分钟前
2025最新Python 100个常用函数在线体验项目
android·java·python·pycharm·django·pandas·pip
学统计的程序员40 分钟前
JAVA锁机制:对象锁与类锁
java·开发语言
苹果醋31 小时前
vuex4.0用法
java·运维·spring boot·mysql·nginx
晴空月明1 小时前
Spring IoC容器与依赖注入深度解析
java
Java初学者小白2 小时前
秋招Day14 - MySQL - 数据库架构
java·数据库·数据库架构
转码的小石2 小时前
深入Java大厂面试:从Spring框架到微服务架构的技术解析
java·spring boot·spring cloud·微服务·junit·spring security·hibernate
大熊程序猿2 小时前
quartz 表达式最近10次执行时间接口编写
java·服务器·前端