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

Nous avons résumé les modifications 1.2 publiées le 2 janvier 2017.

De plus, il convient de noter

S'il te plait regarde.

Note:

** 2017/4/10: Addendum ** Ajout de changements dans la version 1.2.1.

** 21/08/2017: Addendum ** Ajout de changements dans la version 1.2.2.

Version requise de la bibliothèque dépendante

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

Spring 4.3+ (Spring Boot 1.4+) requis

Dans la version 1.2, Spring Boot 1.4+, qui est basé sur Spring 4.3, est requis car il utilise ʻObjectProviderajouté à partir de Spring 4.3 pour la configuration automatique. Si vous utilisez des caractères génériques (par exemplemybatis.mapper-locations = classpath *: ** / mapper / *. Xml`) lors de la lecture du fichier Mapper, Spring Boot 1.4.3+ (Spring 4.3. Si vous n'utilisez pas 5+), vous pouvez rencontrer un problème de lecture des fichiers Mapper en double (gh-108). ..

Note: Lors de l'utilisation sur Spring 4.2 (Spring Boot 1.3), veuillez utiliser la version 1.1.1.

Version de la bibliothèque

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

Nom de la bibliothèque 1.1.1 version 1.2.Version de 0 1.2.1 version 1.2.2 versions
MyBatis 3.4.0 3.4.2 3.4.4 3.4.5
MyBatis Spring 1.3.0 1.3.1 1.3.1 1.3.1
Spring Boot 1.3.3.RELEASE 1.4.3.RELEASE 1.4.5.RELEASE 1.4.7.RELEASE

Structure de dépendance d'artefact

Dans la version 1.2, la structure de dépendance de «mybatis-spring-boot-starter» et «mybatis-spring-boot-autoconfigure» a été revue. C'est en réponse à un commentaire de Stéphane Nicoll, l'un des principaux committers de Spring Boot.

Plus précisément ... Dans la version 1.1,

[INFO] +- org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.1.1:compile
[INFO] |  \- org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:jar:1.1.1:compile
[INFO] |     +- org.mybatis:mybatis:jar:3.4.0:compile
[INFO] |     +- org.mybatis:mybatis-spring:jar:1.3.0:compile
[INFO] |     +- org.springframework.boot:spring-boot:jar:1.4.3.RELEASE:compile
[INFO] |     |  \- org.springframework:spring-context:jar:4.3.5.RELEASE:compile
[INFO] |     |     +- org.springframework:spring-aop:jar:4.3.5.RELEASE:compile
[INFO] |     |     +- org.springframework:spring-beans:jar:4.3.5.RELEASE:compile
[INFO] |     |     \- org.springframework:spring-expression:jar:4.3.5.RELEASE:compile
[INFO] |     +- org.springframework.boot:spring-boot-autoconfigure:jar:1.4.3.RELEASE:compile
[INFO] |     \- org.springframework.boot:spring-boot-starter-jdbc:jar:1.4.3.RELEASE:compile
[INFO] |        +- org.springframework.boot:spring-boot-starter:jar:1.4.3.RELEASE:compile
[INFO] |        |  +- org.springframework.boot:spring-boot-starter-logging:jar:1.4.3.RELEASE:compile
[INFO] |        |  |  +- ch.qos.logback:logback-classic:jar:1.1.8:compile
[INFO] |        |  |  |  \- ch.qos.logback:logback-core:jar:1.1.8:compile
[INFO] |        |  |  +- org.slf4j:jcl-over-slf4j:jar:1.7.22:compile
[INFO] |        |  |  +- org.slf4j:jul-to-slf4j:jar:1.7.22:compile
[INFO] |        |  |  \- org.slf4j:log4j-over-slf4j:jar:1.7.22:compile
[INFO] |        |  \- org.yaml:snakeyaml:jar:1.17:runtime
[INFO] |        +- org.apache.tomcat:tomcat-jdbc:jar:8.5.6:compile
[INFO] |        |  \- org.apache.tomcat:tomcat-juli:jar:8.5.6:compile
[INFO] |        \- org.springframework:spring-jdbc:jar:4.3.5.RELEASE:compile
[INFO] |           \- org.springframework:spring-tx:jar:4.3.5.RELEASE:compile

Cependant, dans la version 1.2,

[INFO] +- org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.2.0:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:1.4.3.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot:jar:1.4.3.RELEASE:compile
[INFO] |  |  |  \- org.springframework:spring-context:jar:4.3.5.RELEASE:compile
[INFO] |  |  |     +- org.springframework:spring-aop:jar:4.3.5.RELEASE:compile
[INFO] |  |  |     \- org.springframework:spring-expression:jar:4.3.5.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-autoconfigure:jar:1.4.3.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-starter-logging:jar:1.4.3.RELEASE:compile
[INFO] |  |  |  +- ch.qos.logback:logback-classic:jar:1.1.8:compile
[INFO] |  |  |  |  \- ch.qos.logback:logback-core:jar:1.1.8:compile
[INFO] |  |  |  +- org.slf4j:jcl-over-slf4j:jar:1.7.22:compile
[INFO] |  |  |  +- org.slf4j:jul-to-slf4j:jar:1.7.22:compile
[INFO] |  |  |  \- org.slf4j:log4j-over-slf4j:jar:1.7.22:compile
[INFO] |  |  \- org.yaml:snakeyaml:jar:1.17:runtime
[INFO] |  +- org.springframework.boot:spring-boot-starter-jdbc:jar:1.4.3.RELEASE:compile
[INFO] |  |  +- org.apache.tomcat:tomcat-jdbc:jar:8.5.6:compile
[INFO] |  |  |  \- org.apache.tomcat:tomcat-juli:jar:8.5.6:compile
[INFO] |  |  \- org.springframework:spring-jdbc:jar:4.3.5.RELEASE:compile
[INFO] |  |     +- org.springframework:spring-beans:jar:4.3.5.RELEASE:compile
[INFO] |  |     \- org.springframework:spring-tx:jar:4.3.5.RELEASE:compile
[INFO] |  +- org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:jar:1.2.0:compile
[INFO] |  +- org.mybatis:mybatis:jar:3.4.2:compile
[INFO] |  \- org.mybatis:mybatis-spring:jar:1.3.1:compile

Il est devenu. Ce qui a changé, c'est ... Dans la version 1.1, mybatis-spring-boot-starter ne dépend que de mybatis-spring-boot-autoconfigure, et mybatis-spring-boot-autoconfigure est MyBatis, Il avait une dépendance sur MyBatis-Spring et Spring Boot. À première vue, il semble qu'il n'y ait pas de problème, mais en effet mybatis-spring-boot-autoconfigure joue également le rôle de Starter, et cette partie est différente de l'idée de Starter et AutoConfigure fournie par Spring Boot !! C'était ça.

C'est ... Si vous ajoutez uniquement l'artefact AutoConfigure **, vous devez empêcher l'application Spring Boot d'avoir des effets secondaires (rendre la configuration automatique inefficace) et activer la configuration automatique. Starter est le rôle de résoudre les bibliothèques dépendantes nécessaires pour le faire en un seul coup! !! Ça ressemble à ça.

Warning: Si vous spécifiez mybatis-spring-boot-starter comme artefact dépendant, vous ne serez pas affecté par ce changement, mais si vous spécifiez mybatis-spring-boot-autoconfigure , Veuillez modifier pour spécifier mybatis-spring-boot-starter lorsque vous utilisez la version 1.2.

Ajout de mybatis.configuration-properties

Depuis la version 1.2, une nouvelle propriété (mybatis.configuration-properties) a été ajoutée pour spécifier la valeur à remplacer par l'espace réservé ($ {key name}). Les espaces réservés peuvent être utilisés dans les fichiers de configuration MyBatis, les fichiers XML Mapper, les variables de substitution définies par SQL et certaines valeurs d'annotation.

Le format qui peut être spécifié dans la propriété est

mybatis.configuration-properties.Nom de la clé=Valeur clé

Et ... par exemple

src/main/resources/application.properties


mybatis.configuration-properties.db.schema=prod

En le définissant comme, vous pouvez vous y référer comme $ {db.schema}.

C'est ... Exprimé dans le fichier de paramètres MyBatis

mybatis-config.xml


<properties>
    <property name="db.schema" value="prod" />
</properties>

Exprimé en utilisant ʻorg.mybatis.spring.SqlSessionFactoryBean` fourni par MyBatis Spring,

@Bean
SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) {
    SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
    factoryBean.setDataSource(dataSource);
    Properties props = new Properties();
    props.setProperty("db.schema", "prod");
    factoryBean.setConfigurationProperties(props);
    return factoryBean;
}

or

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configurationProperties">
        <props>
            <prop key="db.schema">prod</prop> 
        </props>
    </property>
</bean>

Sera.

Note: En fait ... Dans la version 1.1.1, la même chose peut être réalisée en définissant comme suit. Cette méthode peut également être utilisée dans la version 1.2, et s'il y a le même nom de clé, la valeur spécifiée dans mybatis.configuration-properties ajoutée dans la version 1.2 est prioritaire.

mybatis.configuration.variables.db.schema=prod

Par exemple ... Définissez des valeurs indépendantes de l'environnement (ou des valeurs par défaut) dans mybatis.configuration.variables et utilisez mybatis.configuration-properties dans le fichier de propriétés pour chaque profil (pour chaque environnement). Vous pouvez également l'utiliser pour remplacer les valeurs dépendant de l'environnement.

Coopération entre les clés de propriété sous mybatis.configuration et IDE

À partir de la version 1.1, la propriété (mybatis.configuration. *) Pour configurer ʻorg.apache.ibatis.session.Configuration` est prise en charge, mais la clé de propriété est complétée sur les IDE tels que STS et IntelliJ IDEA. Ce n'était pas ciblé. Ce bogue sera corrigé dans la version 1.2.

Note: Cependant ... cette fois, il y a un autre problème (gh-127) que la clé de propriété est dupliquée ... Cela semble être un bogue dans le maven-bundle-plugin utilisé au moment de la construction et sera résolu dans la version 1.2.1.

** 2017/4/10: Addendum ** Le problème des clés de propriété en double a été résolu dans la version 1.2.1! !!

Ajout de l'interface ConfigurationCustomizer

[Modifications de la version 1.3](http://qiita.com/kazuki43zoo/items/3f94d2049d331f81e6f5#configurationcustomizer%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%95%E3% 82% A7% E3% 83% BC% E3% 82% B9% E3% 81% AE% E8% BF% BD% E5% 8A% A0).

Ajout de @ MybatisTest (mybatis-spring-boot-starter-test)

Modifications de la version 1.3 Prière de se référer à.

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