如何使 Java 对象访问 Spring 属性 值?

How to enable Java object to access Spring property value?

在我的一个 Spring xml 属性 文件中,我有以下 bean:

<bean class="com.project.TimerBean">
    <property name="delay" value="30000" />
    <property name="interval" value="60000" />
    <property name="invokeThis" value="com.project.TargetClass" />
    <property name="receiver" value="XYZ" />
</bean>

本质上,TimerBean用于调用指定值内的TargetClass。此 属性 文件中声明了 TimerBean 的其他几个实例。

现在我需要 TargetClass 来访问 interval 的值。最好的方法是什么?

编辑 #1:为了澄清我的情况,TimerBean 本质上创建了一个 TargetClass 类型的对象,TargetClass 中的一些代码运行,然后在稍后的执行中使用该对象.很难具体说明,主要是因为我将所有不同的 bean 归为这个 TargetClass 类别,并且每个 bean 做不同的事情。它们唯一的共同点是 属性 文件中的初始化。

我会在 Spring 组件中做这样的事情:

@Component
public class MyClass {

  @Autowired
  com.project.TimerBean timerBean;

  public void myFunc() {
      System.out.println(timerBean.getInterval());
  }
  ...
}

感谢您的澄清。 你为什么不使用 Java 的反射来完成你的任务?

如果您知道完全限定的 class 名称,您可以像这样实例化一个对象:

Object instance = Class.forName("com.project.TargetClass").newInstance();

如果需要运行的代码在构造函数中,你就达到了目的。

但是,如果您需要 运行 该实例的特定方法:

Method method = instance.getClass().getDeclaredMethod("methodName");
method.invoke(instance);

希望对您有所帮助!