java - 为什么一个类需要访问 Spring 上下文?

标签 java spring dependency-injection

我看到 Spring bean 和其他常规类都可以访问 spring 应用程序上下文。

我想知道为什么一个类必须处理 Spring 上下文。我的理解是,在 main 方法中,您引导您的应用程序,从那一点开始的所有内容都由 Spring 连接。

如果是这样,main 方法应该是唯一需要 ApplicationContext 的地方。您需要 Spring 上下文来完成工作的其他真实案例有哪些?

最佳答案

通常bean不需要访问ApplicationContext直接。

但是,有些情况下需要直接访问。例如:

  • 在运行时访问由其名称标识的 bean:

    class MyClass implements ApplicationContextAware {
        ...
        public void execute(String actionName) {
            Action action = applicationContext.getBean(actionName);
            action.execute();
        }
        ...
    }
    
  • 将自定义参数传递给 prototype 的构造函数- 运行时范围内的 bean:

    Bean bean = applicationContext.getBean("myBean", "foo", "bar");
    

    请注意,如果 Bean的构造函数不需要在运行时传递自定义参数,您可以注入(inject) ObjectFactory<Bean>相反。

  • 使用 AutowireCapableBeanFactory 触发第三方对象的 Autowiring .

关于java - 为什么一个类需要访问 Spring 上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11589279/

相关文章:

javax.xml.bind.UnmarshalException : unexpected element (uri: "",本地:"soap:Envelope")

spring - Spring中过滤器的异常处理

java - 如何逐步从大型系统中的遗留内容中恢复?

mysql 中的 java.lang.NullPointerException

ios - 台风 - 到处注入(inject)相同的实例

javascript - 如何在针对 JavaScript 的 Kotlin 中使用依赖注入(inject)?

JavaScript 异步返回

java - 我正在尝试使用图形并绘制一些矩形

java - 在数组声明中 int[] k,i 和 int k[],i;

jquery - 通过发送ajax请求下载Excel文件