2016-08-13 4 views
1

いくつかのプロパティを使用してオブジェクトを作成したいのですが、Spring @Autowiredを使用してどのように達成できますか? E.g.-コンストラクタを使用してSpringを自動実行します

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

}

どのように私は、実行時にこれらのプロパティを渡すことで、Personクラスの@Autowiredを使用してオブジェクトを作成することができます。

アトル

答えて

3

本当に変数をオートワイヤしますか?または、Beanを取得するときに明示的に設定したいのですか?後者の場合には

、あなたは単に明らかにそれが@Autowiredとは何の関係もありません...あなたの場合には、

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

ApplicationContext.getBean(Class<T> clz, Object ... arguments)を呼び出すことができます。それとも、いくつかの文字列をオートワイヤーしたいのですか?その場合、通常は@Value注釈を使用します。 Autowiredは、セッター・インジェクションを経て... ...コンストラクタ・インジェクションを経て...あなたは、フィールドの注射を介して行うことができます、...

@Autowired 
private MyService service; 

を注入する

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

を使用します。.. 。

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

しかし、通常、あなただけautowire そのように。これは、そのBeanへapp.some.propertyの構成されたプロパティを注入う

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

...文字列には豆ではないので、あなたは@Valueを使用する必要があります。もちろん、これはアプリケーションコンテキストから何かを実際に注入したい場合にのみ有効です。 Personを動的に作成する場合は、上記の方法を使用できます。

+0

簡単に言えば、必要に応じて2つの文字列プロパティを持つpersonクラスのオブジェクトを作成したいと考えています。 Javaでは、新しいものを使用して行うことができますが、春を使用して同じことを作成する方法をundestandしたい。 @Autowiredは引数のコンストラクタはうまく動作しますが、argunmentsを持つコンストラクタとどのように動作しますか? – Atul

+0

答えを更新しました。 –

関連する問題