SpringのコンフィギュレーションXMLスキーマ:バージョンあり、バージョンなし?
質問
私はSpringの初心者です。私が混乱することの一つは、バージョン管理されたスキーマを持つXML設定ファイルを見ることもあれば、バージョン管理されていないスキーマを持つこともあることです。例えば、時々私は次のようなものを見ます。
<?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
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<context:annotation-config/>
<context:component-scan base-package="base.package"/>
</beans>
そして、時にはこのように
<?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
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
<context:component-scan base-package="base.package"/>
</beans>
なお
spring-beans
と
spring-context
のスキーマは2つの例で異なっています。
そこで質問ですが、どちらのスタイルを使うのか、そしてその理由は何でしょうか?特に、バージョン管理されたスキーマは将来利用できなくなるのでしょうか。また、バージョン管理されていないスキーマは、Springがスキーマを更新したときに現在のアプリケーションとの互換性を維持できるのでしょうか。
副次的な質問ですが、バージョン管理されたSpringスキーマの一覧はどこにあるのでしょうか?
ありがとうございます。
どのように解決するのですか?
XSD は、アプリケーションで使用しているフレームワークの現在のバージョンにマップされているため、"versionless" を使用することが推奨されています。
アプリケーションやツールは決してウェブからこれらのXSDを取得しようとしてはいけません。 これらのスキーマは JAR に含まれているからです。もしそうなら、それは通常、アプリケーションが使用しているフレームワークのバージョンよりも新しい XSD を使用しようとしているか、IDE/ツールが適切に設定されていないことを意味します。
私の知る限り、特定の XSD バージョンを使用したいケースが 1 つだけあります: より新しいバージョンで廃止/変更された XML 属性を使用しようとする場合です。少なくとも、これは頻繁に起こることではありません。
とにかくSpringチームはSpring 5.0でバージョン管理されたスキーマを削除すべきです。 SPR-13499 .
バージョンレス == 現在のバージョン" の詳細。
これらのXSDファイルはSpring JARに含まれています - "versionless"のXSDはビルド中に最新バージョンにマップされます( spring.schemas ファイルを参照してください)。 また、オンラインで利用可能なファイルも同じ方法でビルドされます( gradleのビルドでターゲットとなる ).
関連
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
型に解決できない エラー解決
-
Javaでよくある構文エラー
-
java.sql.SQLException: 結果セットの開始前
-
FindBugの使用概要
-
maven レポート エラー 解決不可能な親POM
-
Server Tomcat v9.0 Server at localhost の起動に失敗しました。
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
春ブート複数のデータソースの管理(atomikos)同じサーバーホスト上の複数のプロジェクトを開始する複数のJava - jarのエラーソリューション
-
テストが空であるかどうかを判断するためのオプションの処理
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
SLF4J: クラス・パスに複数のSLF4Jバインディングが含まれています。
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException:5 エラー
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
Junitのユニットテストはjava.lang.Testを報告します。
-
SocketException java.netの4つの例外解決策。
-
アノテーション「@Retention」の役割
-
CertificateException: XXXに一致するサブジェクトの代替DNS名が見つかりません 解決策
-
API の戻り値を処理するために ResponseEntity を使用する
-
Server Tomcat v9.0 Server at localhost の起動に失敗しました。
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。