通过实现ApplicationContextAware接口动态获取bean
编程技术  /  houtizong 发布于 3年前   134
场景:
在代码中需要动态获取spring管理的bean
代码:
SpringContextUtils.java
package com.wyy.snail.core.util;import org.springframework.beans.BeansException;import org.springframework.beans.factory.NoSuchBeanDefinitionException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component;/** * Spring的工具类,用来获得配置文件中的bean * * @author penghy * @date 2014-04-08 * */@Componentpublic class SpringContextUtils implements ApplicationContextAware {private static ApplicationContext applicationContext = null;/*** * 当继承了ApplicationContextAware类之后,那么程序在调用 getBean(String)的时候会自动调用该方法, * 不用自己操作 */public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {SpringContextUtils.applicationContext = applicationContext;}public static ApplicationContext getApplicationContext() {return applicationContext;}/*** * 根据一个bean的id获取配置文件中相应的bean * * @param name * @return * @throws BeansException */public static Object getBean(String name) throws BeansException {return applicationContext.getBean(name);}/*** * 类似于getBean(String name)只是在参数中提供了需要返回到的类型。 * * @param name * @param requiredType * @return * @throws BeansException */public static <T> T getBean(String name, Class<T> requiredType) throws BeansException {return applicationContext.getBean(name, requiredType);}/** * 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true * * @param name * @return boolean */public static boolean containsBean(String name) {return applicationContext.containsBean(name);}/** * 判断以给定名字注册的bean定义是一个singleton还是一个prototype。 * 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException) * * @param name * @return boolean * @throws NoSuchBeanDefinitionException */public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {return applicationContext.isSingleton(name);}/** * @param name * @return Class 注册对象的类型 * @throws NoSuchBeanDefinitionException */public static Class<?> getType(String name) throws NoSuchBeanDefinitionException {return applicationContext.getType(name);}/** * 如果给定的bean名字在bean定义中有别名,则返回这些别名 * * @param name * @return * @throws NoSuchBeanDefinitionException */public static String[] getAliases(String name) throws NoSuchBeanDefinitionException {return applicationContext.getAliases(name);}}
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成
网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];
文章归档
文章标签
友情链接