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;
    }
}
相关推荐
半聋半瞎4 分钟前
【进程和线程】(面试高频考点)
java·jvm·面试
功德+n16 分钟前
在 Maven 中使用 <scope> 元素:全面指南
java·maven
失业写写八股文35 分钟前
Java类加载阶段深度解析:三步走全流程详解
java
yyueshen42 分钟前
单例模式,有必要用volatile么?
java·单例模式·设计模式
一条闲鱼_mytube44 分钟前
[Kubernetes] 7控制平面组件
java·平面·kubernetes
小杨4041 小时前
springboot框架项目实践应用三(监控运维组件admin)
spring boot·后端·监控
Y雨何时停T1 小时前
Spring IoC 详解
java·spring·rpc
&白帝&2 小时前
Java @PathVariable获取路径参数
java·开发语言·python
Yuanymoon2 小时前
【由技及道】镜像星门开启:Harbor镜像推送的量子跃迁艺术【人工智障AI2077的开发日志010】
java·docker·jenkins·harbor·devops
木胭脂沾染了灰2 小时前
策略设计模式-下单
java·前端·设计模式