我正在將一個 spring 專案遷移到 spring boot。spring 專案使用 xml 配置來定義 bean。我想在遷移到 springboot 時使用相同的 bean,而不是自動生成 bean。所以我在包含主要方法的 application.java 檔案中匯入了 xml 檔案。當我運行 springboot 應用程式時,其中一個 bean 出現錯誤。
錯誤:創建名為 'validateAuthentication' 的 bean 時出錯:通過欄位 authenticateCloudHost 表示不滿足的依賴項 沒有可用的“java.lang.string”型別的合格 bean:預期的單個匹配 bean 但找到了 2:CONNECT_TIMEOUT,READ_TIMEOUT
bean 中的 authenticateCloudHost 是一個從專案資源檔案夾內的 application.properties 檔案中獲取值的屬性。代碼示例如下所示。
applicationContext.xml:
<bean id="validateAuthentication" class = "com.abc.JAXRSValidateAuthenticateAssociateClient>
<constructor-arg index="0" value = "${api.client.id}">
<constructor-arg index="1" value = "${api.client.password}">
<property name="authenticateCloudHost" value = "${api.client.cloud.host}">
<bean>
JAXRSValidateAuthenticateClient.java:
@Named
public class JAXRSValidateAuthenticateAssociateClient {
String id;
String password;
public JAXRSValidateAuthenticateAssociateClient (String id, String password) {
this .id= id
this.password = password
}
@Inject
private String authenticateCloudHost ;
public void setAuthenticateCloudHost(String authenticateCloudHost) {
this.authenticateCloudHost = authenticateCloudHost;
}
}
應用程式.java:
@SpringBootApplication
@ImportResource("classpath:applicationContext.xml")
public class Application {
public static void main (String[] args){
SpringAPplication.run(Application.class, args);
}
}
任何幫助將不勝感激。
uj5u.com熱心網友回復:
除非您的背景關系中有一個物件,否則您不能注入字串型別的物件。我假設您想從組態檔中注入一個值。一般來說,其他兩個字串作為建構式引數注入而欄位注入用于第三個,這看起來很奇怪。
如果您仍想從組態檔中注入“api.client.cloud.host”屬性,則應使用
@Value("${api.client.cloud.host}")
private String authenticateCloudHost;
注釋而不是@Inject
盡管如果您可以更改代碼,我寧愿建議向您的建構式添加另一個引數并改用建構式注入。您可以在建構式引數上使用相同的注釋,或者手動創建 bean 并在呼叫 JAXRSValidateAuthenticateAssociateClient bean 的建構式的類中注入“api.client.cloud.host”值
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/505294.html
上一篇:由物體子生成器SpelEvaluationException生成的findByUserIsCurrentUser出錯
