目录
Spring Boot中动态注入一个bean到另一个类中
欢迎关注我们的微信公众号:数据科学与艺术作者WX:superhe199
Spring Boot中动态注入Bean
Spring Boot中bean的动态注入可以使用@Autowired注解来实现。要动态注入Bean,请使用ApplicationContext 对象检索已注册的Bean 并手动注入所需的Bean。
示例代码如下。
导入org.springframework.beans.BeansException。
导入org.springframework.context.ApplicationContext。
导入org.springframework.context.ApplicationContextAware。
导入org.springframework.stereotype.Component。
@成分
公共类BeanInjector 实现ApplicationContextAware {
私有静态ApplicationContext applicationContext;
@覆盖
公共无效setApplicationContext(ApplicationContext applicationContext)抛出BeansException {
BeanInjector.applicationContext=applicationContext;
}
公共静态无效注入Bean(对象对象){
applicationContext.getAutowireCapableBeanFactory().autowireBean(object);
}
}
在上面的代码中,BeanInjector类实现了ApplicationContextAware接口,并通过setApplicationContext方法检索ApplicationContext对象。 insertBean方法用于手动注入bean,需要注入的对象则通过调用autowireBean方法自动注入。
在使用过程中,可以通过调用BeanInjector.injectBean(object)方法动态注入bean。这里的object就是需要注入到bean中的对象。
另一个类中动态注入
下面是一个创建MyBean 类并将MyBean 对象动态插入到另一个类中的示例。
导入org.springframework.beans.factory.annotation.Autowired。
导入org.springframework.stereotype.Component。
@成分
公共类MyBean {
公共无效SayHello(){
System.out.println(\’你好,这是MyBean。\’);
}
}
@成分
公共类AnotherBean {
私有MyBean myBean;
@Autowired
公共无效setMyBean(MyBean myBean){
this.myBean=myBean;
}
公共无效invokeMyBean(){
myBean.sayHello();
}
}
在上面的示例中,MyBean 类是常规Spring bean,AnotherBean 类通过@Autowired 注释将MyBean 对象注入到myBean 属性中。
然后调用BeanInjector.injectBean(anotherBean)方法将MyBean对象动态注入AnotherBean中。
公共类主要{
公共静态无效主(字符串[] args){
ApplicationContext 上下文=SpringApplication.run(Main.class, args);
AnotherBean anotherBean=new AnotherBean();
BeanInjector.injectBean(anotherBean);
anotherBean.invokeMyBean();
}
}
上面的例子中,我们通过ApplicationContext对象获取了AnotherBean的实例,并调用BeanInjector.injectBean方法动态注入MyBean对象。最后调用anotherBean.invokeMyBean()方法检查注入是否成功。
动态注入Bean 可以根据运行时的各种条件选择需要注入的Bean,从而实现更大的灵活性。
以上#BEAN中SpringBoot动态注入相关内容来源仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93231.html