博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
普通线程类获取service,controller等spring容器类
阅读量:4541 次
发布时间:2019-06-08

本文共 3636 字,大约阅读时间需要 12 分钟。

package com.zihexin.application.strategy;import org.springframework.beans.BeansException;import org.springframework.beans.factory.NoSuchBeanDefinitionException;import org.springframework.beans.factory.config.BeanFactoryPostProcessor;import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component;/** * @Author: SimonHu * @Date: 2019/7/18 16:05 * @Description:普通线程类获取service类,命名不规范会导致获取不到bean,可以断点查看beanFactory.getBean内beanDefinitionMap内 * 具体bean的别名; */@Componentpublic final class SpringUtils implements BeanFactoryPostProcessor, ApplicationContextAware {    /**     * Spring应用上下文环境     */    private static ConfigurableListableBeanFactory beanFactory;    private static ApplicationContext applicationContext = null;        @Override    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {        SpringUtils.beanFactory = beanFactory;    }        /**     * 获取对象     *     * @param name     * @return Object 一个以所给名字注册的bean的实例     * @throws org.springframework.beans.BeansException     */    @SuppressWarnings("unchecked")    public static 
T getBean(String name) throws BeansException { return (T) beanFactory.getBean(name); } /** * 获取类型为requiredType的对象 * * @param clz * @return * @throws org.springframework.beans.BeansException */ public static
T getBean(Class
clz) throws BeansException { T result = (T) beanFactory.getBean(clz); return result; } /** * 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true * * @param name * @return boolean */ public static boolean containsBean(String name) { return beanFactory.containsBean(name); } /** * 判断以给定名字注册的bean定义是一个singleton还是一个prototype。 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException) * * @param name * @return boolean * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException */ public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException { return beanFactory.isSingleton(name); } /** * @param name * @return Class 注册对象的类型 * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException */ public static Class
getType(String name) throws NoSuchBeanDefinitionException { return beanFactory.getType(name); } /** * 如果给定的bean名字在bean定义中有别名,则返回这些别名 * * @param name * @return * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException */ public static String[] getAliases(String name) throws NoSuchBeanDefinitionException { return beanFactory.getAliases(name); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { if (SpringUtils.applicationContext == null) { SpringUtils.applicationContext = applicationContext; } } //获取applicationContext public static ApplicationContext getApplicationContext() { return applicationContext; }}

使用方法:

@Componentpublic class TPPStrategy implements Strategy {    @Autowired    private TPPTask tppTask;        public TPPStrategy() {       //  beanName 不规范会导致获取失败,看工具类描述        tppTask = SpringUtils.getBean("TPPTask");    }     @Override    public void consumeTask() {        tppTask.consumeTask();    }}

 

转载于:https://www.cnblogs.com/SimonHu1993/p/11208458.html

你可能感兴趣的文章
如何查看方法在哪里被调用
查看>>
HUE的自动化安装部署
查看>>
图片服务器(FastDFS)的搭建
查看>>
myBatis应用
查看>>
RuntimeError: DataLoader worker (pid 18255) is killed by signal: Killed.
查看>>
[PHP] 用AppServ一步到位安装PHP服务器
查看>>
mac brew install redis 报错
查看>>
Work? working!
查看>>
开源收藏
查看>>
scipy插值interpolation
查看>>
C# BackgroundWorker
查看>>
移动对meta的定义
查看>>
(转载)char与byte的区别
查看>>
《零基础学习Python》01
查看>>
启动页面
查看>>
1005 继续(3n+1)猜想 (25 分)
查看>>
【洛谷P1641】[SCOI2010]生成字符串
查看>>
2014.8.15模拟赛【公主的朋友】
查看>>
Linux常用系统信息查看命令
查看>>
系统全局环境变量设置
查看>>