Spring Boot(1.4.1)のSpring Data JPAスターターを使用します。 Spring Data JPA 1.10.3が含まれています。ただし、このバージョンの春のデータにはまだ存在しない@DomainEvents
アノテーションを使用する必要があります。 Spring Data JPAの最新バージョンを追加しようとすると、アプリケーションの実行時にエラーが発生します。
私のポンの例:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
...
</dependencies>
そのようなSpring Data JPAの最新バージョンを追加しようとすると:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.11.6.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
アプリを起動するとエラーが発生します。このようなエラー:
Caused by: Java.lang.NoSuchMethodException: org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.<init>()
at Java.lang.Class.getConstructor0(Class.Java:3082) ~[na:1.8.0_121]
at Java.lang.Class.getDeclaredConstructor(Class.Java:2178) ~[na:1.8.0_121]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.Java:80) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
... 53 common frames omitted
Spring Data JPAの新しいバージョンを使用するにはどうすればよいですか?アプリに@DomainEvents
が必要です。ありがとう!
ここで猫に皮をむく方法はいくつかありますが、それぞれに利点と欠点があります。
全体として最も安全な方法は、最新バージョンのSpring Bootにアップグレードすることです。通常、現在のメジャー世代の最新のマイナーバージョンを使用することをお勧めします。あなたのケースでは1.5が最新のマイナーなので、それにアップグレードすることをお勧めします(現在は1.5.6)。これは通常、使用する親pomのバージョン番号を変更するだけで実現できます。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent>
以前のアプローチの代わりに、現在のブートバージョンを維持しながら、サードパーティの依存関係を選択的にアップグレードする方法があります。そのための推奨される方法は、どのバージョンのプレースホルダーが spring-boot-dependencies に存在するかを確認することです。次に、プロジェクトでプロパティを再宣言し、バージョンを調整するだけです。 Spring Dataの場合、次のようになります。
<properties>
<spring-data-releasetrain.version>Ingalls-SR6<spring-data-releasetrain.verion>
</properties>
Spring Dataの場合、ここでリリーストレイン全体を一度にアップグレードするので、1つのモジュールをアップグレードするだけで内部的にSpring Dataモジュール間の非互換性に遭遇することはありません。これが、新しいバージョンで依存関係を明示的に再宣言するよりも、この「プロパティによるアップグレード」が推奨される主な理由の1つです(これは、場合によっては最後の手段になる可能性があります)。
実際には、私は通常、次の手順を試します。
2と3は、個人的に好むものや、チームに定義した依存関係のアップグレードポリシーに応じて交換可能です。
一般的に言えば、Bootのリリースに注意を払い、定期的にプロジェクトを新しいバージョンにドライアップグレードすることをお勧めしますが、必ずしもそのアップグレードを製品版に出荷する必要はありません。これにより、アップグレードのリスクを評価し、これに必要な作業量を見積もることができます。 基本的にアップグレードを回避すると、痛みが増しますが、政治的な理由やアップグレードが実行されているため、すぐに作成できない場合があります新しいバージョンの問題。