美文网首页
根据Bean id 获取IOC容器中的对象

根据Bean id 获取IOC容器中的对象

作者: 大黑跟小白的日常 | 来源:发表于2019-09-14 00:05 被阅读0次

1、实现ApplicationContextAware接口;

2、@Component注解标注,实现属性加载赋值;

@Component
public class SpringContextUtil implements ApplicationContextAware {
    private static ApplicationContext applicationContext;
    /**
     * 实现ApplicationContextAware接口的回调方法,设置上下文环境
     */
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) {
        SpringContextUtil.applicationContext = applicationContext;
    }
    /**
     * 获得spring上下文
     *
     * @return ApplicationContext spring上下文
     */
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }
    /**
     * 获取bean
     *
     * @param name service注解方式name为小驼峰格式
     * @return Object bean的实例对象
     */
    public static Object getBean(String name) throws BeansException {
        return applicationContext.getBean(name);
    }
}

3、测试使用

@SpringBootTest
@RunWith(SpringRunner.class)
public class ApplicationContextTest {
    @Test
    public void test() {
        Object redisTemplate = SpringContextUtil.getBean("redisTemplate");
        System.out.println(redisTemplate);
    }

也可以直接从IOC中获取ApplicationContext对象使用;

@SpringBootTest
@RunWith(SpringRunner.class)
public class ApplicationContextTest {
    @Autowired
    private ApplicationContext context;
    @Test
    public void testApplicationContex() {
        Object redisTemplate = context.getBean("redisTemplate");
        System.out.println(redisTemplate);
    }

相关文章

网友评论

      本文标题:根据Bean id 获取IOC容器中的对象

      本文链接:https://www.haomeiwen.com/subject/ppgdyctx.html