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

web*_*Dev 4 java spring autowired

可能重复:
无论如何@Autowire需要构造函数参数的bean?

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

@Autowired 
private InjectedClass injectedClass; 
Run Code Online (Sandbox Code Playgroud)

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

Nan*_*ale 5

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

public class MovieRecommender {

  @Autowired
  private MovieCatalog movieCatalog;

  private CustomerPreferenceDao customerPreferenceDao;

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

  // ...
}
Run Code Online (Sandbox Code Playgroud)


duf*_*ymo 3

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

注解和 XML 配置可以在 Spring 中混合。它不必是全有或全无。

<bean id="myClass" class="foo.bar.MyClass">
    <constructor-arg ref="yourArgRefHere"/> 
</bean>
Run Code Online (Sandbox Code Playgroud)