弹簧获取当前应用上下文

2022-08-31 08:46:43

我正在使用Spring MVC作为我的Web应用程序。我的豆子写在“”文件中spring-servlet.xml

现在我有一个类,我想使用弹簧豆访问这个类MyClass

在我写了以下内容spring-servlet.xml

<bean id="myClass" class="com.lynas.MyClass" />

现在我需要使用访问它ApplicationContext

ApplicationContext context = ??

这样我就可以做到

MyClass myClass = (MyClass) context.getBean("myClass");

如何做到这一点??


答案 1

只需注射它..

@Autowired
private ApplicationContext appContext;

或实现此接口:ApplicationContextAware


答案 2

我认为此链接演示了在任何地方获取应用程序上下文的最佳方法,即使在非 Bean 类中也是如此。我发现它非常有用。希望对你来说也是一样的。以下是它的抽象代码

创建一个新的类 ApplicationContextProvider.java

package com.java2novice.spring;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class ApplicationContextProvider implements ApplicationContextAware{

    private static ApplicationContext context;

    public static ApplicationContext getApplicationContext() {
        return context;
    }

    @Override
    public void setApplicationContext(ApplicationContext ac)
            throws BeansException {
        context = ac;
    }
}

在应用程序上下文中添加条目.xml

<bean id="applicationContextProvider"
                        class="com.java2novice.spring.ApplicationContextProvider"/>

在注释情况下(而不是应用程序上下文.xml)

@Component
public class ApplicationContextProvider implements ApplicationContextAware{
...
}

获取类似如下的上下文

TestBean tb = ApplicationContextProvider.getApplicationContext().getBean("testBean", TestBean.class);

干杯!!


推荐