【问题标题】:how to invoke injected bean's method如何调用注入的bean的方法
【发布时间】:2014-03-11 13:25:53
【问题描述】:

我有一个关于如何调用Spring框架中注入的bean方法的问题。

注入的类由setter、getter和属性组成。它会是这样的:

class Mark {
   private String opacity;
   private String alignment;

   public setOpacity(String opacity);
   public getOpacity();
   public setAlignement(String alignement);
   public getAlignement();
}

这个类将被注入到另一个类中,我想从 Mark 类中获取不透明度、对齐等数据。但是我不想像这样在调用者类中写类的方法名称:

@Autowired
Mark mark;

void caller() {

    String opacity = mark.getOpacity();

    String alignment = mark.getAlignment(); 
 }

为此,我考虑过使用 Class.forName()、getDeclaredFields()、getDeclaredMethods() 进行反射,但我很快意识到它适用于普通类而不适用于注入类。

所以我的问题是: 有没有办法调用注入的bean的方法或直接使用反射获取数据?或者任何想法从注入的 bean 中获取数据?

【问题讨论】:

  • 为什么要使用反射?打电话给mark.getOpacity()mark.getAlignment() 还不够吗?顺便说一句,您的 getter 方法定义定义是错误的,考虑到您使用的是注解,您还应该将 Mark 类注解为 @Service、@Component 或类似的。

标签: java spring dependency-injection


【解决方案1】:

首先,您必须在Mark 中指定方法的返回类型:

public void setOpacity(String opacity);
public String getOpacity();
public void setAlignement(String alignement);
public String getAlignement();

然后,您必须使用 @Service 注释您的 Mark

【讨论】:

  • 很抱歉忘记在 Mark 中添加返回类型的方法。我也知道使用 @service 注释,但我认为这并不重要,因为我提到“这个类将被注入”,我会做到的。为此,除了指出用法之外,没有人回答我真正的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-30
  • 1970-01-01
  • 1970-01-01
  • 2012-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多