java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot 获取IOC容器

Spring Boot中获取IOC容器的多种方式

作者:生无谓

本文主要介绍了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容器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文