Spring:如何将String bean注入构造函数?
我有一个class级Config
:
Config.java
public class Config { private final String p = "Prop"; @Bean public String getP(){return p;} }
我如何将其注入一些构造函数,即:
public class SomeC { private String p; public SomeC(String p) { this. p = p; } }
我希望这个String p
从Config中注入值。 那可能吗?
您必须命名bean,然后在自动assembly引用该名称时使用@Qualifier
注释。
例:
Config.java
public class Config { private final String p = "Prop"; @Bean(name="p") public String getP(){return p;} }
SomeC.java
public class SomeC { private String p; @Autowired public SomeC(@Qualifier("p") String p) { this. p = p; } }
您应该像这样使用@Autowired
:
@Autowired public SomeC(String p){ this.p = p; }
或者像这样:
public class SomeC { @Autowired private String p; }
我更喜欢第二种方法,但是这使得类更难以测试,因为从外部看不到依赖项,因此请谨慎使用。