スプリング】豆の自動組立
自動アセンブリは、SpringがBeanの依存関係を満たすための方法です!
Springは自動的にコンテキストを探し、自動的にプロパティをBeanに組み付けます!
Springでアセンブルする方法は3つあります。
<ブロッククオート- xmlで表示するコンフィグレーション
- Javaでコンフィギュレーションを表示
- Beanの暗黙の自動アセンブル [重要
1. アセンブリを表示します。
前回のブログで書いた表示方法。
2. 自動組立
- 名前別 : 自身が持つオブジェクトの set メソッドの値に対応する bean-id をコンテナコンテキストから自動的に探します。
すべてのビーンIDが一意であり、ビーンが自動的に注入されたプロパティのセットメソッド値に一致する必要があることを確認する必要があります!
<bean id="people" class="com.company.org.People" autowire="byName">
<property name="name" value="Makemake"/>
</bean>
- タイプ別 : コンテナコンテキスト内で、自身のオブジェクトと同じプロパティタイプを持つBeanを自動的に探します( は、このタイプのオブジェクトが1つだけであることを確認する必要があります。 )
すべてのビーンのクラスが一意であり、このビーンが自動注入されるプロパティと一貫している必要があることを確認する必要があります
<bean id="people" class="com.company.org.People" autowire="byType">
<property name="name" value="Makemake"/>
</bean>
- 自動アセンブリのためのアノテーションの使用
JDK 1.5でアノテーションのサポートが開始され、Spring 2.5でアノテーションのサポートが開始されました。
アノテーションを使用する際の注意点。
1. 制約をインポートする。
2. アノテーションのサポートを設定する。
<?xml version="1.0" encoding="UTF-8"? >
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<! -- Configuring annotation support -->
<context:annotation-config/>
</beans>
オートワイアード
プロパティに直接使用する。(この自動組み立てされたプロパティがIOC(Spring)コンテナに存在し、byNameという名前と一致すれば、この時点でsetメソッドを省略することができる)
デフォルトでは依存オブジェクトが存在することを要求し、もしNULL値が許されるなら、そのrequired属性をfalseに設定することができます。
@Autowired
private Cat cat;
@Autowired
private Dog dog;
PS. Nullable : フィールドは、このアノテーションでマークされ、フィールドがヌルになる可能性があることを示します。
@Autowired(required = false)
private Cat cat;
Qualifier(value="xxx") : Autowiredの自動配線環境が複雑で、単一のアノテーション[@Autowired]で自動配線ができない場合、Qualifier(value="xxx")で@Autowiredの使用を設定し、注入する一意のBeanオブジェクトを指定します!この場合、Autowiredの使用はできません。
@Autowired
@Qualifier(value = "dog")
private Dog dog;
リソース / @Resource(name ="xxx") . Resourceには、nameとtypeという2つの重要な属性があります。
まとめると、@Resourceと@Autowiredの違い。
- すべて自動組立てに使用され、すべて属性フィールドに配置することができます。
- @AutowiredはbyTypeによってのみ実装されます。
- リソースはデフォルトでbaNameで実装され、名前が見つからない場合はbyTypeで実装されます。Spring は @Resource アノテーションの name 属性をビーンの名前に、type 属性をビーンのタイプに解決します。
- 実装の順番が違う。AutowiredはbyTypeによって実装される。ResourceはデフォルトでbaNameの方法で実装されています。
関連
-
NullPointerException - java.lang.
-
Javaでよくある構文エラー
-
Java の switch case 文で必要な定数式の問題の解決法
-
名前 'XXX' を持つ Bean の作成に失敗しました。自動依存関係の注入に失敗しました 解決方法
-
java -jarコマンドでパッケージを実行すると、無効または破損したjarfile xxxx.jarが表示される。
-
XXX型を囲むインスタンスがJavaでアクセスできない
-
Junitのユニットテストエラー
-
Javaがエラーで実行される、選択が起動できない、最近起動したものがない
-
Java JDKのダイナミックプロキシ(AOP)の使用と実装の原理分析
-
IDEAError:javaの依存性エラー。Annotation processing is not supported for module cycles...(アノテーション処理はモジュールサイクルではサポートされていません。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
スレッド "main "での例外 java.util.NoSuchElementException in Java 問題解決済み
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
executeQuery()でデータ操作文が発行できない。解決方法
-
Springの設定でxsdファイルのバージョン番号を設定しない方が良い理由
-
Javaジェネリックを1つの記事で
-
java.sql.SQLException: 結果セットの開始前
-
X11 DISPLAY変数が設定されていない」問題の解決方法
-
switch case文のcaseの後の列挙定数は列挙型なし
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。
-
MyBatisカスタムタイプハンドラ TypeHandler