Spring Boot中获取IOC容器的多种方式
更新时间:2025年09月22日 11:13:24 作者:生无谓
本文主要介绍了Spring Boot中获取IOC容器的多种方式,包括直接注入、实现ApplicationContextAware接口、通过SpringApplication.run()、借助BeanFactory及实现BeanFactoryAware接口,感兴趣的可以了解一下
1. 直接注入ApplicationContext
@Service
public class MyService {
@Autowired
private ApplicationContext applicationContext;
public void doSomething() {
// 通过ApplicationContext获取Bean
UserService userService = applicationContext.getBean(UserService.class);
// 或者通过名称获取
UserService userService2 = (UserService) applicationContext.getBean("userService");
}
}
2. 实现ApplicationContextAware接口
@Component
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext context) throws BeansException {
applicationContext = context;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public static <T> T getBean(Class<T> clazz) {
return applicationContext.getBean(clazz);
}
public static <T> T getBean(String name, Class<T> clazz) {
return applicationContext.getBean(name, clazz);
}
public static Object getBean(String name) {
return applicationContext.getBean(name);
}
}
3. 通过SpringApplication.run()获取ApplicationContext
@SpringBootApplication
public class Application {
public static void main(String[] args) {
// 启动应用并获取ApplicationContext
ApplicationContext context = SpringApplication.run(Application.class, args);
// 直接从context中获取Bean
UserService userService = context.getBean(UserService.class);
userService.doSomething();
}
}
4. 通过BeanFactory获取
@Service
public class MyService {
@Autowired
private BeanFactory beanFactory;
public void doSomething() {
if (beanFactory.containsBean("userService")) {
UserService userService = (UserService) beanFactory.getBean("userService");
// 使用userService
}
}
}
5. 通过实现BeanFactoryAware接口
@Component
public class MyComponent implements BeanFactoryAware {
private BeanFactory beanFactory;
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.beanFactory = beanFactory;
}
public void doSomething() {
UserService userService = (UserService) beanFactory.getBean("userService");
// 使用Bean
}
}
到此这篇关于Spring Boot中获取IOC容器的多种方式的文章就介绍到这了,更多相关SpringBoot 获取IOC容器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
一文详解SpringBoot如何使用pageHelper做分页处理
分页是常见大型项目都需要的一个功能,PageHelper是一个非常流行的MyBatis分页插件,下面就跟随小编一起来了解下SpringBoot是如何使用pageHelper做分页处理的吧2025-03-03
springboot log4j2.xml如何读取application.yml中属性值
这篇文章主要介绍了springboot log4j2.xml如何读取application.yml中属性值问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-12-12
使用MyBatis的动态SQL注解实现实体的CRUD操作代码
在使用MyBatis进行数据库操作时,动态SQL注解提供了一种优雅的方式来编写动态SQL语句,MyBatis 3.x 版本提供了下四个CRUD的高级注解,这些注解可以帮助开发者在Mapper接口中动态地构建SQL语句,本文给大家介绍了使用MyBatis的动态SQL注解实现实体的CRUD操作2024-06-06
Spring中ImportBeanDefinitionRegistrar源码和使用方式
Spring容器扩展流程总结:1. 定义Mapper层,2. 通过FactoryBean创建代理对象,3. 使用ImportBeanDefinitionRegistrar修改Bean定义,4. 应用自定义注解@LuoyanImportBeanDefinitionRegistrar,5. 配置类中执行后置处理器,6. 启动类中查看源码,希望对大家有所帮助2024-11-11
java微信公众号开发第一步 公众号接入和access_token管理
这篇文章主要为大家介绍了java微信公众号开发,主要内容包括公众号接入和access_token管理,感兴趣的小伙伴们可以参考一下2016-01-01


最新评论