簡體   English   中英

如何在Spring bean中傳遞類構造函數參數由注釋自動裝配

[英]How to pass class constructor parameters in Spring bean Autowired by annotations

沒有IOC容器的常規方法是:

new User("Names", 22);

這里的參數值是動態的,例如,它們是通過用戶提交表單獲取的,因此不能存儲在文件中。

TextField userNames = new TextField();

names = userNames.getText()

其他參數相同。

哪里:

@Component
public class User {
    public User(String names, int age) {
        .
        .
        .
    }
}

如何初始化User ,同時通過構造函數的參數,其中用戶被Autowired到另一個類:

@Component
public class AnotherClass {
    @Autowired
    User user(....)????? // How do I do it here
    .
    .
    .
}

我懷疑這是你真正想要做的 我的猜測是User是某種模型對象,不應該由Spring的依賴注入處理。

依賴注入(其大大解釋這里當執行請求時,容器開始或春MVC)通常創建和電線豆在一起。 因此,必須在創建AnotherClass實例之前創建User對象。

如果這是使用Spring MVC的請求的一部分,則@ModelAttribute@RequestParam@PathVariable可能是您的朋友。 有關這方面的一些很好的文檔,請查看Spring文檔

public User(  @Value("Ganesh") String names,               
@Value("27")  int age) {
names=names;
this.age=age;
}

除了@value之外,在XML中使用索引還具有靈活性,如果index = 0,比如使用兩次,則后面的值用於覆蓋舊值。 類似地,可以在重載和參數化構造函數的情況下指定類型,並且IOC自己選擇適當的構造函數。 如果未提供type或index,則會考慮構造函數args的默認順序,如果參數化的cons不匹配,則會發生異常。 假設使用了setter並且在bean標記內部,為同一個名稱提供了兩個屬性標記,在這種情況下,拋出異常而不是覆蓋該值。 在setter中,不允許使用兩個參數。

暫無
暫無

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

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