[JAVA] Changements dans mybatis-spring-boot-starter 2.0

(Bien qu'il soit beaucoup tard ...) Voici un résumé des changements 2.0 publiés le 22 janvier 2019: sweat_smile:

Note: Depuis la sortie de la 2.0.1 en avril 2019, le contenu inclut les modifications de la 2.0.1.

La principale caractéristique de ce changement est qu'il s'agit de la première version qui nécessite Spring Boot 2.x (Spring Framework 5.x) ou supérieur, car il n'y a pas d'ajouts de fonctionnalités ou d'améliorations majeurs qui seront le point culminant de ce changement. (Bien que nous ayons fait quelques améliorations modestes ...).

De plus, il convient de noter

Veuillez également voir si nécessaire.

Note: À propos, la maintenance de Spring Boot 1.5.x (Spring Framework 4.3.x) se poursuit dans la version 1.3.x, mais il est annoncé que Spring Boot 1.5.x sera EOL d'ici 2019/8. Comme cela a été fait, la maintenance de la version 1.3.x sera finie en même temps (= la maintenance sera terminée en publiant la 1.3.5 à la fin).

Version requise de la bibliothèque dépendante

Pour utiliser la version 2.0, les versions suivantes sont requises.

Version requise de Java

Java 8 ou supérieur est requis pour utiliser la version 2.0.

Mise à jour de la version de la bibliothèque dépendante

Dans la version 2.0, les versions de bibliothèque suivantes ont été mises à jour.

Nom de la bibliothèque 1.3.2 versions 2.0.Version de 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: La version 1.3.3 publiée en même temps que la version 2.0.0 a été mise à jour vers Spring Boot 1.5.19.RELEASE, et la version 1.3.4 publiée en même temps que la version 2.0.1 a été mise à jour vers Spring Boot 1.5.20.

Prend en charge la spécification de typeAliasesSuperType dans la propriété de conjugaison

typeAliasesSuperType est une option prise en charge par SqlSessionFactoryBean fournie par Spring My Batis, et lors de l'analyse d'une classe à enregistrer en tant qu'alias de type sous le package spécifié, une classe qui peut être affectée à l'interface de classe spécifiée (=) Il est utilisé lorsque vous souhaitez analyser uniquement la classe héritée ou implémentée).

Par exemple ... Si vous souhaitez enregistrer uniquement la classe qui implémente l'interface com.example.data.Entity sous le package spécifié dans l'alias de type,

src/main/resources/application.properties


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

Il peut être réalisé en spécifiant.

Modifié pour activer la configuration automatique de MyBatis uniquement lorsqu'il n'y a qu'un seul DataSource injectable

Jusqu'à la version 1.3.x, si plusieurs DataSources sont enregistrés dans le conteneur DI sans spécifier le primaire (= il y a plusieursDataSources de candidats à l'injection avec par type. (Si c'est le cas), il y a eu une erreur dans la configuration automatique de MyBatis, mais depuis 2.0, elle a été modifiée de sorte que la configuration automatique de MyBatis est désactivée. Ce changement a fourni des commentaires sur des comportements tels que la configuration automatique pour JdbcTemplate fourni par Spring Boot.

En ce qui concerne la prise en charge de la configuration automatique pour plusieurs sources de données, nous vous serions reconnaissants si vous pouviez créer un problème en tant que demande d'ajout de fonction (PR est également le bienvenu!).

Application de spring-boot-autoconfigure-processor

[spring-boot-autoconfigure-processor](https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-auto-configuration.html#boot-features- custom-starter-module-autoconfigure) lit Spring Boot en lisant les informations d'annotation (méta-informations requises pour Auto-Configure) de la classe Auto-Configure à l'avance au moment de la compilation et en les sortant dans le fichier de propriétés. Il s'agit d'un artefact qui vise à accélérer le temps de démarrage de l'application en éliminant le processus de lecture des méta-informations de la classe au moment de l'exécution. La version 1.3.x n'utilisait pas ce mécanisme, mais depuis la version 2.0, il a été amélioré pour utiliser ce mécanisme pour générer des méta-informations dans le fichier de propriétés.

Prend en charge les caractères génériques lors de la spécification d'un package de base

À partir de la version 2.0.1, spécifiez des caractères génériques lors de la spécification du package de base à analyser dans les propriétés de configuration (mybatis.type-aliases-package et mybatis.type-handlers-package). Vous pourrez.

En particulier···

#Désignation du caractère générique compte tenu de la profondeur du paquet
mybatis.type-handlers-package=com.example.*.typehandler

#Spécification générique sans être conscient de la profondeur du paquet
mybatis.type-handlers-package=com.example.**.typehandler

Il est possible de spécifier un tel sentiment.

Note: Comme MyBatis lui-même ne prend pas en charge la spécification de caractères génériques, vous ne pouvez pas spécifier de caractères génériques dans le package de base spécifié dans le fichier de configuration (mybatis-config.xml) de MyBatis lui-même.

Important: ** Lorsque la version 2.0.1 est appliquée, "Erreur en double lors de l'analyse des alias de type, que des caractères génériques soient spécifiés ou non. / spring / issues / 362) »a été signalé, vous devez donc être prudent lors de la mise à jour. ** On sait que l'erreur ne se produit pas de manière inconditionnelle et que s'il existe une interface de classe qui satisfait aux conditions suivantes dans le package à analyser, une erreur en double se produira.

  • Utilisation de plusieurs objets anonymes
  • Il existe plusieurs classes d'interface / classes internes avec le même nom

Cet événement sera corrigé dans MyBatis Spring 2.0.2 (dont la sortie est prévue début 2019/7), et la version 2.1.0 intégrant MyBatis Spring 2.0.2 sera publiée début 2019/7. Je vais. Il n'est pas prévu de rétroporter vers la version 2.0.x (car il a été annoncé que Spring Boot 2.0.x sera EOL en mars 2019 + il est déjà sorti de GA). Afin de résoudre ce problème, il est fondamentalement recommandé de mettre à jour vers la version 2.1.x. Cependant ... Si vous ne pouvez pas mettre à jour vers la version 2.1.x, veuillez envisager d'appliquer MyBatis Spring 2.0.2 individuellement.

Il n'est plus nécessaire de spécifier @ExtendWith (SpringExtension.class) lors de la spécification @ MybatisTest

Depuis la version 2.0.1, il n'est plus nécessaire de spécifier @ExtendWith (SpringExtension.class) dans la classe de cas de test JUnit 5 avec @ MybatisTest. Il s'agit d'une annotation spécifiée par le moteur de framework JUnit 5 pour l'annotation synthétique @ MybatisTest en ajoutant @ExtendWith (SpringExtension.class) ʻ sur le côté @ MybatisTest. C'est parce qu'il lit les informations à partir de. Ce changement est un retour de la même réponse à @ SpringBootTest` fournie par Spring Boot.

java:Version 2.0.Exemple de création de classe de cas de test JUnit5 dans 1 ou version ultérieure


@MybatisTest
class MyMapperTest {
  // ...
}

java:Référence: Version 2.0.Exemple de création de classe de cas de test JUnit5 avant 0


@ExtendWith(SpringExtension.class) //Version 2.0.Cette spécification n'est pas requise après 1
@MybatisTest
class MyMapperTest {
  // ...
}

Recommended Posts

Changements dans mybatis-spring-boot-starter 2.0
Changements dans mybatis-spring-boot-starter 2.1
Changements dans mybatis-spring-boot-starter 1.3
Changements dans mybatis-spring-boot-starter 1.2
Changements dans Mockito 2
Changements dans Java 11
Changements dans JUnit5M4-> M5
Modifications de l'emplacement principal dans iOS 14
Changements majeurs dans Spring Boot 1.5
Notation de version Java qui change dans Java 10
Changements majeurs dans la fonctionnalité de base de Spring Framework 5.0