Java spring非注入类访问注入类方法

Posted ZK_小姜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java spring非注入类访问注入类方法相关的知识,希望对你有一定的参考价值。

1、只需要定义一个SpringContextUtils工具类(需要注入到容器中,可以使用注解或者配置的方式),实现一下ApplicationContextAware接口,注入ApplicationContext,然后在工具类中定义一个静态变量applicationContext,将注入的ApplicationContextAware赋值给applicationContext,然后通过applicationContext获取容器中的任意实例:

@Component
public class SpringContextUtils implements ApplicationContextAware
    private static ApplicationContext applicationContext;

    public void setApplicationContext(ApplicationContext arg0)
            throws BeansException 
        applicationContext = arg0;
    

    /**
     * 获取applicationContext对象
     * @return
     */
    public static ApplicationContext getApplicationContext()
        return applicationContext;
    

    /**
     * 根据bean的id来查找对象
     * @param id
     * @return
     */
    public static Object getBeanById(String id)
        return applicationContext.getBean(id);
    

    /**
     * 根据bean的class来查找对象
     * @param c
     * @return
     */
    public static Object getBeanByClass(Class c)
        return applicationContext.getBean(c);
    

    /**
     * 根据bean的class来查找所有的对象(包括子类)
     * @param c
     * @return
     */
    public static Map getBeansByClass(Class c)
        return applicationContext.getBeansOfType(c);
    

以上是关于Java spring非注入类访问注入类方法的主要内容,如果未能解决你的问题,请参考以下文章

Spring在Action中不用注入实体类

Spring 依赖注入方式详解

Spring 依赖注入方式详解

Spring依赖注入(DI)的三种方式

如何通俗的理解java的依赖注入

spring