[解決済み] コンストラクタの引数を必要とする Bean を @Autowire する方法はありますか?
2022-06-09 06:45:51
質問内容
Spring 3.0.5を使用しており、クラスのメンバにできるだけ@Autowireアノテーションを使用しています。 autowireする必要があるBeanの1つは、そのコンストラクタに引数を必要とします。 Springのドキュメントに目を通しましたが、コンストラクタの引数にアノテーションを付ける方法への言及が見つからないようです。
XMLでは、私はビーン定義の一部として使用することができます。 Autowireアノテーションのための同様のメカニズムがあるのでしょうか?
例
@Component
public class MyConstructorClass{
String var;
public MyConstructorClass( String constrArg ){
this.var = var;
}
...
}
@Service
public class MyBeanService{
@Autowired
MyConstructorClass myConstructorClass;
....
}
この例で、MyBeanServiceの"constrArg"の値を@Autowireアノテーションで指定するにはどうしたらよいでしょうか。 何か方法があるのでしょうか?
ありがとうございます。
エリック
どのように解決するのですか?
あなたは
@Value
アノテーションが必要です。
一般的な使用例として、デフォルトのフィールド値を割り当てるために
"#{systemProperties.myProp}"
スタイルの表現が可能です。
public class SimpleMovieLister {
private MovieFinder movieFinder;
private String defaultLocale;
@Autowired
public void configure(MovieFinder movieFinder,
@Value("#{ systemProperties['user.region'] }") String defaultLocale) {
this.movieFinder = movieFinder;
this.defaultLocale = defaultLocale;
}
// ...
}
より明確に言うと、あなたのシナリオでは、2つのクラスを配線することになります。
MybeanService
と
MyConstructorClass
のようなものです。
@Component
public class MyBeanService implements BeanService{
@Autowired
public MybeanService(MyConstructorClass foo){
// do something with foo
}
}
@Component
public class MyConstructorClass{
public MyConstructorClass(@Value("#{some expression here}") String value){
// do something with value
}
}
更新:複数の異なるインスタンスが必要な場合は
MyConstructorClass
を異なる値で指定する必要があります。
Qualifierアノテーションを使用する
関連
-
[解決済み】クライアントが送信したリクエストは構文的に正しくありません -Spring MVC + JDBC Template
-
[解決済み] ユニットテストから ApplicationContext を読み込むのに失敗しました。FileNotFound
-
クラスパス上に Spring WebApplicationInitializer のタイプが検出されない Loading configuration file not found or spring main configuration not found.
-
applicationContext の読み込みに失敗しました。
-
[解決済み] クラスパス上にSpring WebApplicationInitializerの型が検出されない
-
[解決済み】Spring @Autowire プロパティとコンストラクタの違いについて
-
[解決済み】SpringのGA、RC、M2リリースの違いは何ですか?
-
[解決済み] Spring Boot ホワイトラベルエラーページの削除
-
[解決済み] 同じインタフェースを実装する2つのビーンを自動配線する - 自動配線するデフォルトのビーンを設定する方法は?
-
[解決済み] YAMLを使ったSpring @PropertySource
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】クラスパス上にSpring WebApplicationInitializerの型が検出されない
-
[解決済み] mvc:annotation-driven はバインドされていません。
-
FunctionService' タイプのビーンが見つかりませんでした。
-
ソースコード解析:SpringはどのようにIOCコンテナにBeanを登録するのですか?
-
一致するビーンは1つだと思ったが、2つ見つかった:onedbJdbcTemplate,twodbJdbcTemplate
-
[解決済み] Spring MVC RESTコントローラでHTTPヘッダ情報にアクセスする方法は?
-
[解決済み] Spring Resttemplateの例外処理
-
[解決済み] スコープ("prototype")ビーンスコープで新しいビーンが作成されない
-
[解決済み] コンテンツタイプ 'application/x-www-form-urlencoded;charset=UTF-8' は @RequestBody MultiValueMap ではサポートされていません。
-
[解決済み] Spring MVC Test によるマルチパート POST リクエストの単体テスト