[JAVA] Änderungen in mybatis-spring-boot-Starter 2.0

(Obwohl es viel spät ist ...) Hier ist eine Zusammenfassung der am 22. Januar 2019 veröffentlichten 2.0-Änderungen: heat_smile:

Note: Seit der Veröffentlichung von 2.0.1 im April 2019 enthält der Inhalt die Änderungen von 2.0.1.

Das Highlight dieser Änderung ist, dass es sich um die erste Version handelt, für die Spring Boot 2.x (Spring Framework 5.x) oder höher erforderlich ist, da keine wesentlichen Funktionserweiterungen oder -verbesserungen das Highlight dieser Änderung darstellen. (Obwohl wir einige bescheidene Verbesserungen vorgenommen haben ...).

Darüber hinaus sollte beachtet werden

Bitte sehen Sie auch bei Bedarf nach.

Note: Die Wartung für Spring Boot 1.5.x (Spring Framework 4.3.x) wird übrigens in Version 1.3.x fortgesetzt, es wird jedoch angekündigt, dass Spring Boot 1.5.x bis 2019/8 EOL sein wird. Da dies geschehen ist, wird die Wartung von Version 1.3.x gleichzeitig abgeschlossen (= die Wartung wird durch Veröffentlichung von 1.3.5 am Ende abgeschlossen).

Erforderliche Version der abhängigen Bibliothek

Zur Verwendung von Version 2.0 sind die folgenden Versionen erforderlich.

Erforderliche Version von Java

Für die Verwendung von Version 2.0 ist Java 8 oder höher erforderlich.

Abhängige Aktualisierung der Bibliotheksversion

In Version 2.0 wurden die folgenden Bibliotheksversionen aktualisiert.

Bibliotheksname 1.3.2 Versionen 2.0.Version von 0 2.0.1 Version
MyBatis 3.4.6 3.5.0 3.5.1
MyBatis Spring 1.3.2 2.0.0 2.0.1
Spring Boot 1.5.10.RELEASE 2.0.8.RELEASE 2.0.9.RELEASE

Note: Version 1.3.3, die zur gleichen Zeit wie Version 2.0.0 veröffentlicht wurde, wurde auf Spring Boot 1.5.19.RELEASE aktualisiert, und Version 1.3.4, die zur gleichen Zeit wie Version 2.0.1 veröffentlicht wurde, wurde auf Spring Boot 1.5.20 aktualisiert.

Unterstützt die Angabe von "typeAliasesSuperType" in der Konjugationseigenschaft

typeAliasesSuperType ist eine Option, die von SqlSessionFactoryBean unterstützt wird, die von Spring My Batis bereitgestellt wird, und beim Scannen einer Klasse, die als Typalias unter dem angegebenen Paket registriert werden soll, eine Klasse, die der angegebenen Klassenschnittstelle zugewiesen werden kann (=) Es wird verwendet, wenn Sie nur die geerbte oder implementierte Klasse scannen möchten.

Zum Beispiel ... Wenn Sie nur die Klasse registrieren möchten, die die Schnittstelle com.example.data.Entity unter dem angegebenen Paket im Typalias implementiert,

src/main/resources/application.properties


mybatis.type-aliases-package=com.example
mybatis.type-aliases-super-type=com.example.data.Entity

Dies kann durch Angabe realisiert werden.

Geändert, um die automatische Konfiguration von MyBatis nur zu aktivieren, wenn nur eine injizierbare "DataSource" vorhanden ist

Bis Version 1.3.x, wenn mehrere DataSources im DI-Container registriert sind, ohne die primäre anzugeben (= es gibt mehrereDataSources von Injektionskandidaten mit nach Typ. (Wenn ja), ist ein Fehler in der automatischen Konfiguration von MyBatis aufgetreten. Seit 2.0 wurde die Änderung jedoch so vorgenommen, dass die automatische Konfiguration von MyBatis deaktiviert ist. Diese Änderung lieferte Feedback zu Verhaltensweisen wie der automatischen Konfiguration für "JdbcTemplate", die von Spring Boot bereitgestellt wurden.

In Bezug auf die Unterstützung der automatischen Konfiguration für mehrere Datenquellen würden wir uns freuen, wenn Sie ein Problem als Anforderung zum Hinzufügen von Funktionen erstellen könnten (PR ist ebenfalls willkommen!).

Anwenden des Spring-Boot-Autoconfigure-Prozessors

[Spring-Boot-Autoconfigure-Prozessor](https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-auto-configuration.html#boot-features- Custom-Starter-Modul-Autokonfiguration) liest Spring Boot, indem die Anmerkungsinformationen (für die automatische Konfiguration erforderliche Metainformationen) der Klasse "Auto-Configure" zur Kompilierungszeit im Voraus gelesen und in die Eigenschaftendatei ausgegeben werden. Dies ist ein Artefakt, das darauf abzielt, die Startzeit der Anwendung zu beschleunigen, indem das Lesen von Metainformationen aus der Klasse zur Laufzeit entfällt. Version 1.3.x hat diesen Mechanismus nicht verwendet, aber seit Version 2.0 wurde es verbessert, diesen Mechanismus zum Ausgeben von Metainformationen in die Eigenschaftendatei zu verwenden.

Unterstützt Platzhalter beim Angeben eines Basispakets

Geben Sie ab Version 2.0.1 Platzhalter an, wenn Sie das zu scannende Basispaket in den Konfigurationseigenschaften angeben (mybatis.type-aliases-package und mybatis.type-handlers-package). Sie werden in der Lage sein.

Speziell···

#Platzhalterbezeichnung unter Berücksichtigung der Tiefe des Pakets
mybatis.type-handlers-package=com.example.*.typehandler

#Platzhalter-Spezifikation, ohne die Tiefe des Pakets zu kennen
mybatis.type-handlers-package=com.example.**.typehandler

Es ist möglich, ein solches Gefühl zu spezifizieren.

Note: Da MyBatis selbst die Angabe von Platzhaltern nicht unterstützt, können Sie in dem in der Konfigurationsdatei (mybatis-config.xml) von MyBatis selbst angegebenen Basispaket keine Platzhalter angeben.

Important: ** Wenn Version 2.0.1 angewendet wird, "Doppelter Fehler beim Scannen von Typ-Aliasen, unabhängig davon, ob ein Platzhalter angegeben ist oder nicht. / spring / issue / 362) ”wurde gemeldet, daher müssen Sie beim Aktualisieren vorsichtig sein. ** Beachten Sie, dass der Fehler nicht unbedingt auftritt und dass bekanntlich ein doppelter Fehler auftritt, wenn eine Klassenschnittstelle vorhanden ist, die die folgenden Bedingungen unter dem zu scannenden Paket erfüllt.

  • Verwenden mehrerer anonymer Objekte
  • Es gibt mehrere Schnittstellenklassen / innere Klassen mit demselben Namen

Dieses Ereignis wird in MyBatis Spring 2.0.2 behoben (voraussichtlich Anfang 2019/7 veröffentlicht), und Version 2.1.0 mit MyBatis Spring 2.0.2 wird Anfang 2019/7 veröffentlicht. Ich werde. Es gibt keine Pläne für eine Backportierung auf Version 2.0.x (da angekündigt wurde, dass Spring Boot 2.0.x im März 2019 + EOL sein wird, da GA bereits nicht mehr verfügbar ist). Um dieses Problem zu beheben, wird grundsätzlich empfohlen, auf Version 2.1.x zu aktualisieren. Wenn Sie jedoch nicht auf Version 2.1.x aktualisieren können, sollten Sie MyBatis Spring 2.0.2 einzeln anwenden.

Es ist nicht mehr erforderlich, "@ExtendWith (SpringExtension.class)" anzugeben, wenn "@ MybatisTest" angegeben wird

Ab Version 2.0.1 ist es nicht mehr erforderlich, "@ExtendWith (SpringExtension.class)" in der JUnit 5-Testfallklasse mit "@ MybatisTest" anzugeben. Dies ist eine Annotation, die von der JUnit 5-Framework-Engine für die synthetische Annotation "@ MybatisTest" angegeben wird, indem "@ExtendWith (SpringExtension.class)" auf der Seite "@ MybatisTest" hinzugefügt wird. Dies liegt daran, dass Informationen von gelesen werden. Diese Änderung ist eine Rückmeldung derselben Antwort auf "@ SpringBootTest", die von Spring Boot bereitgestellt wurde.

java:Version 2.0.Beispiel für die Erstellung einer JUnit5-Testfallklasse in 1 oder höher


@MybatisTest
class MyMapperTest {
  // ...
}

java:Referenz: Version 2.0.Beispiel für die Erstellung einer JUnit5-Testfallklasse vor 0


@ExtendWith(SpringExtension.class) //Version 2.0.Diese Spezifikation ist nach 1 nicht mehr erforderlich
@MybatisTest
class MyMapperTest {
  // ...
}

Recommended Posts

Änderungen in mybatis-spring-boot-Starter 2.0
Änderungen im Mybatis-Spring-Boot-Starter 2.1
Änderungen im Mybatis-Spring-Boot-Starter 1.3
Änderungen im Mybatis-Spring-Boot-Starter 1.2
Änderungen in Mockito 2
Änderungen in Java 11
Änderungen in JUnit5M4-> M5
Änderungen des Kernstandorts in iOS 14
Wichtige Änderungen in Spring Boot 1.5
Java-Versionsnotation, die sich in Java 10 ändert
Wichtige Änderungen in der Kernfunktionalität von Spring Framework 5.0