2016-08-13 25 views
1

我想創建一個使用少量屬性的對象,我該如何使用Spring @Autowired來實現該目標? E.g.-使用構造函數的自動裝入的春天

public class Person{ 
private String fname; 
private String lname; 
public Person(String fname, String lname){ 
    this.fname = fname; 
    this.lname = lname; 
} 

}

如何創建使用Person類的@Autowired在運行時通過這些特性的對象。

Atul

回答

3

你真的想自動裝入變量嗎?或者你想在獲取bean時明確地設置它們?

在後一種情況下,你可以簡單地調用ApplicationContext.getBean(Class<T> clz, Object ... arguments),你的情況......

Person person = context.getBean(Person.class, "Henry", "Miller"); 

顯然,這並沒有什麼關係@Autowired。或者你想自動裝入一些字符串?在這種情況下,您通常會使用@Value註釋。自動裝配Autowired用於注入,您可以通過字段注入做...

@Autowired 
private MyService service; 

...通過構造函數注入...

@Autowired 
public Person(MyService service) { ... } 

...通過setter注入.. 。

@Autowired 
public void setMyService(MyService service) {..} 

但通常你只在自動裝配的方式。字符串是沒有祕密,所以你必須使用@Value ...

@Autowired 
public Person(@Value('${app.some.property}') final String firstName) {...} 

這將注入的app.some.property配置的屬性成豆。當然,如果你真的想從應用程序上下文中注入某些東西,這纔是好事。如果您想動態創建人員,則可以使用上述方法。

+0

簡而言之,我希望在需要時創建一個具有2個字符串屬性的人類對象。在java中,我們可以使用new來做到這一點,但是想要使用spring來創建相同的方法。 @Autowired在沒有參數構造函數的情況下工作良好,但它如何與具有參數的構造函數一起工作。 – Atul

+0

更新了答案。 –

相關問題