簡體   English   中英

Spring自動裝配的注釋構造函數參數

[英]Spring autowired annotation constructor parameter

這是我的代碼

類:

@Component("testcomp")
public class TestClass {

private String msg;

@Autowired
public TestClass(String msg)
{
    this.msg = msg;
}

}

appconfig.xml

<context:component-scan base-package="com.example.demo"/>
<bean id="msg" class="java.lang.String" c:_0="Test MSG"/>

當我運行項目時,我收到了這個錯誤:“com.example.demo.TestClass中構造函數的參數0需要一個無法找到的'java.lang.String'類型的bean。”

這種方法不適用於String類。 但如果我將String類型更改為用戶定義的類,它的效果很好。 我錯了,或者春天不可能這樣做?

我認為將基元注入組件並沒有多大意義。

  • 您的字符串是常量,因此請將其設為靜態final。
  • 你的字符串是一個配置,所以把它放到你的application.properties文件中,並使用@Value("${path.to.your.property.key}")來注入它。

我沒試過,但我認為你仍然可以這樣配置你的bean:

@Configuration
public class Config {

  @Bean(name = "msg")
  public String msg() {
    return "Test MSG";
  }
}

@Component("testcomp")
public class TestClass {

  private String msg;

  @Autowired
  public TestClass(@Qualifier("msg") String msg)
  {
    this.msg = msg;
  }
}

但是,仍然有更簡單的方法來做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM