带参数的弹簧自动接线

时间:2019-02-28 12:33:36

标签: java spring spring-boot autowired

我正在尝试使用动态参数进行自动装配,我知道我们可以使用@component声明一个类并使该类可用于自动装配,但是如果我有一个带有参数化构造函数的类怎么办。我可以使用自动装配并使用参数初始化对象吗? 请参见下面的代码段。

@Component
public class A{
   public A(Object B){
     // do something
   }
}


public class C{
  @Autowire
  private A a;

  public foo(){
      B b = getBfromSomewhere();
     // create object of A using parameter B
     // like a = new A(b);
      }

  }

1 个答案:

答案 0 :(得分:0)

经过配置注释后,我得到了答案。首先应该告诉spring,例如应该如何创建bean。

@Configuration
public class Appconfig{

 @Bean(name="a")
 public A getA(B b){
   return A(b); 
 }
} 

以后使用时。

public class C{
  @Autowire
  private BeanFactory factory;

   public foo(){
     B b = getBfromSomewhere();
     A a    = factory.getBean(A.class,b)

   }

}