java - 如何在调用任何其他类构造函数之前调用 Spring setter 方法?

标签 java spring dependency-injection

我有一个 Action 类,该类将有一个 BOC 对象,该对象将填充 Spring 依赖注入(inject)。示例代码如下:

public class ActionCls {
  private BOC theBoc = null;

  /*** theBoc getter / setter ***/
}

如果我想调用一个成员函数,说thefunc , 属于 BOCActionCls里面构造函数,像这样:

public class ActionCls {
   private BOC theBoc = null;

   ActionCls() {
      theBoc.thefunc();
   }
}

将抛出一个运行时错误,提示 theBoc一片空白。我确实尝试使用 init-method在这样的 Spring 配置中:

<bean id="theBoc" class="com.huahsin68.BOC" init-method="thefunc"></bean>

无论如何,这没有帮助,因为即使 thefunc首先被调用,但是 theBoc setter 仅在 ActionCls 之后调用构造函数。这是一种调用theBoc的方式吗?二传手第一然后只有ActionCls构造函数?这样theBoc不为空,我可以调用 thefunc .

最佳答案

您不能指望在类的构造函数被调用之前调用类的 getter 或 setter。你想要实现的是不可能的。您可以更好地创建一个参数化构造函数,在其中使用一些参数初始化 theBoc,在 ActionCls bean 上使用 constuctor-arg 参数,然后调用该方法:

public class ActionCls {
   private BOC theBoc = null;

   ActionCls(BOC theBoc) {
      this.theBoc = theBoc
      theBoc.thefunc();
   }
}

然后你可以像这样定义你的构造函数参数:

<bean id="actionCls" class="foo.bar.ActionCls">
        <constructor-arg ref="boc"/>
</bean>

关于java - 如何在调用任何其他类构造函数之前调用 Spring setter 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11898172/

相关文章:

java - 如何关闭 REST 服务的流?

java - 动态表格 :select and form:option in Spring form tags

java - Webapp 地址与 .war 文件名不同

java - 用户身份验证失败时出现 Spring Security ProviderNotFoundException

spring - 在自定义注释的方面传递方法参数

php - 为什么人们在他们的 PHP 框架中使用单例

android - 错误 : [Dagger/IncompatiblyScopedBindings] (unscoped) may not reference scoped bindings:

java - Envers Hibernate 记录表的创建/更改

java - Spring Security fullyAuthenticated() 和 hasRole ("ADMIN")

c# - 如何将依赖注入(inject)与通用 dbset<T> 一起使用