本当に変数をオートワイヤしますか?または、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を動的に作成する場合は、上記の方法を使用できます。
簡単に言えば、必要に応じて2つの文字列プロパティを持つpersonクラスのオブジェクトを作成したいと考えています。 Javaでは、新しいものを使用して行うことができますが、春を使用して同じことを作成する方法をundestandしたい。 @Autowiredは引数のコンストラクタはうまく動作しますが、argunmentsを持つコンストラクタとどのように動作しますか? – Atul
答えを更新しました。 –