如何从不在 Spring 容器中的类访问 Spring Bean 的方法

2024-04-22

我不是一个Spring https://spring.io/亲,所以请耐心等待......

我有三门课:

class SpringBeanA {
    public aMethod() {
        .....
    }
}

class SpringBeanB {

    @Autowired SpringBeanA a;

    public bMethod() {
        a.method();
    }
}

class NONSpringClass {
    .....
    b.method();
    .....
}

b.method()通过实例访问时都会出现空指针错误SpringBeanB b = new SpringBeanB()并将 SpringBeanB 自动装配到 NONSpringClass。

自动装配:

class NONSpringClass {

    @Autowired SpringBeanB b;

    .....
    b.method();
    .....
}

怎样才能成功调用b.method()?


Spring初始化所有对象并将其保存在Spring应用程序上下文中。您有几种不同的方法可以访问应用程序上下文中的对象

首先创建一个 spring 配置类,将 ApplicationContext 注入到私有属性中,并公开为静态方法。

@Configuration
class StaticApplicationContext implements ApplicationContextAware{

  static ApplicationContext applicationContext = null;

  public void setApplicationContext(ApplicationContext context)    throws BeansException {
    applicationContext = context;
  }
  /**
   * Note that this is a static method which expose ApplicationContext
   **/
  public static ApplicationContext getContext(){
        return applicationContext;
  }

}

现在你可以在非春季课程中尝试这个,

((SpringBeanB)StaticApplicationContext.getContext.getBean("b")).bMethod();

请记住,在 Spring 上下文初始化之前调用 getContext 方法可能会导致 NullPointerException。另外,访问 spring 容器外部的 beans 也不是推荐的方法。理想的方法是将所有 bean 移至 spring 容器中进行管理。

如果您想从 java Servlet 访问 Spring 应用程序上下文,请参阅WebApplicationContextUtils http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/context/support/WebApplicationContextUtils.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从不在 Spring 容器中的类访问 Spring Bean 的方法 的相关文章

随机推荐

  • 如何更改 codeigniter 中显示的错误

    The URI you submitted has disallowed characters 我该如何拦截这个错误 他们是一个callback 功能 当我尝试在 URL 中使用 时 会发生此错误 例如 我输入 1 1 我得到这个错误 我想
  • ios5 - 带有故事板的模态视图控制器的大小

    有没有什么方法可以调整使用故事板segue以模态方式呈现的视图控制器的大小 如何通过翻转过渡从该模态视图控制器中呈现另一个视图控制器 如果我将其定义为 Style Modal Presentation Default Transition
  • hibernate是否支持count(*) over()

    我试图避免必须为计数创建一个单独的查询 为实际查询创建一个单独的查询 我发现 SessionImpl createQuery 需要相当多的时间来执行复杂的查询 通过将 count 和主查询结合起来 我可以消除一个 createQuery 调
  • 我们如何修复透明/半透明可组合项上的材质阴影故障?

    如果您还不知道 Android 的材质阴影存在一个缺陷 即材质设计及其表面 照明和高度概念带来的阴影 另外 如果您不知道 Compose 使用许多与View框架 包括那些负责所述阴影的框架 因此它具有与View是的 至少现在是这样 Card
  • 将数据传递到startup.cs

    如何将数据传递到startup cs 这是用于集成测试使用WebHostBuilder and TestServer 我需要根据测试夹具传递不同的数据 因此 例如 不想从配置文件中提取它 数据将提供给startup cs中注册的中间件 文档
  • 使用 Python Pandas 使用每日数据计算月平均值

    我有一个包含四列的文本文件 年 月 日和雪深 这是 1979 年至 2009 年 30 年期间的每日数据 我想使用 pandas 计算 360 个 30 年 X 12 个月 个人月平均值 即隔离 1979 年 1 月 1979 年 2 月
  • 页面速度洞察删除 Google Recaptcha 未使用的 JavaScript

    我有一个网站在 Google Page Speed Insights 上得分很高 但它显示了一个性能问题 并显示此文件的 删除未使用的 JavaScript https www gstatic com recaptcha releases
  • 填充网格的最小矩形区域数

    假设我们有一个网格 并且希望使用尽可能少的颜色 每个区域一种颜色 在其上绘制矩形区域 有一些单元格已经被涂成黑色并且无法被涂掉 有没有多项式算法可以解决这个问题 经过测试 我发现这种情况的解决方案是9 因为我们需要9种不同的颜色来绘制填充整
  • 保持 GridView 中的图像处于选中状态

    我做了什么 大家好 我有一个 GrindView 我填充了我的数据库 现在图像显示在那里并且可以滚动 但是当我点击它时 它们不会保持选中状态 为了查看选择了哪张图片 我构建了一条 Toastmessage 它显示了我使用 onIemClic
  • 如何计算两个整数的相似度?

    其实很难描述 我想实现一种算法 该算法可以逐个比较两个给定整数 数字 具有相同 长度 的相同位置的数字 当我在基于 10 的系统中进行计算时 它是相同的 十的幂 它应该返回平等等级 如下所示 4491 和 1020 0 4491 和 412
  • 需要 div 来填充两个 div 之间的间隙

    给定以下 HTML div div header div div content div div footer div div 以及以下 CSS wrapper min height 100 position relative margin
  • 对唯一顺序索引的多索引 pandas 数据帧进行切片和赋值

    我想选择并更改数据框单元格的值 该数据帧使用了 2 个索引 datetime 和 idx 两者都包含唯一且连续的标签 datetime 索引具有日期时间类型的日期时间标签 idx 具有整数值标签 import numpy as np imp
  • ui-router deferIntercept 和状态参数

    我使用 ui router 的新 deferIntercept 来更新浏览器 url 而无需重新加载 我的控制器 rootScope on locationChangeSuccess function e newUrl oldUrl e p
  • Python AST 中的 ExtSlice 节点表示什么语法?

    我正在费力地浏览Pythonast模块并且无法弄清楚切片定义 slice Ellipsis Slice expr lower expr upper expr step ExtSlice slice dims Index expr value
  • Pandas 读取 Excel 并跳过带删除线的单元格

    我必须处理一些xlsx从外部来源收到 有没有更直接的方法来加载xlsx in pandas同时还用删除线跳过行 目前我必须做这样的事情 import pandas as pd openpyxl working file r somethin
  • 哪些分类器提供权重向量?

    存在哪些机器学习分类器可以在学习阶段后提供权重向量 我了解 SVM 逻辑回归 感知器和 LDA 还有更多吗 我的目标是使用这些权重向量绘制重要性图 其实任何线性分类器 https en wikipedia org title Linear
  • UITableView - 字母表

    这是我希望添加到带有字母表的 UITableView 中的改进 如果我的表中没有不以字母表字母开头的结果 我不想在 UITableView 中看到此 titleForHeaderInSection 我找不到这样做的方法 您可以查看我当前的实
  • 如何将 XML 转换为字符串而不使用 .NET 中的文件?

    假设我有两个字符串 一种是XML数据 另一个是XSL数据 如果您必须知道的话 xml 和 xsl 数据存储在数据库列中 如何在 C 中转换 XML 而不先将 xml 和 xsl 保存为文件 我也希望输出是一个字符串 来自转换的 HTML 看
  • Scala REPL 中的类型信息

    如果我使用 F 解释器 我可以定义一个简单的函数 如下所示 gt Function to check if x is an integer multiple of y gt let multipleOf x y x y 0 val mult
  • 如何从不在 Spring 容器中的类访问 Spring Bean 的方法

    我不是一个Spring https spring io 亲 所以请耐心等待 我有三门课 class SpringBeanA public aMethod class SpringBeanB Autowired SpringBeanA a p