Spring - 自动装配一个具有构造函数的类

时间:2012-04-25 10:52:20

标签: java spring autowired

  

可能重复:
  Anyway to @Autowire a bean that requires constructor arguments?

在我的控制器中,我想使用@Autowired使用方法/构造函数自动装配注入一个类。例如使用:

@Autowired 
private InjectedClass injectedClass; 

我的问题是注入的类injectClass有一个构造函数,我需要将一个变量从控制器传递给构造函数。如何将值传递给构造函数?

2 个答案:

答案 0 :(得分:5)

如果您正在使用注释,则可以将@Autowired注释应用于MyClass的构造函数,该构造函数将自动连接您传递给MyClass特殊构造函数的bean。考虑一下例如。

public class MovieRecommender {

  @Autowired
  private MovieCatalog movieCatalog;

  private CustomerPreferenceDao customerPreferenceDao;

  @Autowired
  public MovieRecommender(CustomerPreferenceDao customerPreferenceDao) {
      this.customerPreferenceDao = customerPreferenceDao;
  }

  // ...
}

答案 1 :(得分:3)

您可以使用@Resource(name = "x")注释标记私有数据成员,也可以在应用程序上下文XML中使用构造函数注入来连接它们。

注释和XML配置可以在Spring中混合使用。它不一定是全部或全部。

<bean id="myClass" class="foo.bar.MyClass">
    <constructor-arg ref="yourArgRefHere"/> 
</bean>