[JAVA] Änderungen im Mybatis-Spring-Boot-Starter 1.2

Wir haben die am 2. Januar 2017 veröffentlichten 1.2 Änderungen zusammengefasst.

Darüber hinaus sollte beachtet werden

Bitte sehen Sie.

Note:

** 10.04.2017: Nachtrag ** Änderungen in Version 1.2.1 hinzugefügt.

** 21.08.2017: Nachtrag ** Änderungen in Version 1.2.2 hinzugefügt.

Erforderliche Version der abhängigen Bibliothek

Zur Verwendung von Version 1.2 sind die folgenden Versionen erforderlich.

Feder 4.3+ (Spring Boot 1.4+) erforderlich

In Version 1.2 ist Spring Boot 1.4+ erforderlich, das auf Spring 4.3 basiert, da für die automatische Konfiguration der aus Spring 4.3 hinzugefügte "ObjectProvider" verwendet wird. Wenn Sie beim Lesen der Mapper-Datei Platzhalter verwenden (z. B. mybatis.mapper-location = classpath *: ** / mapper / *. Xml), Spring Boot 1.4.3+ (Spring 4.3). Wenn Sie 5+ nicht verwenden, tritt möglicherweise das Problem auf, dass Mapper-Dateien doppelt gelesen werden (gh-108). ..

Note: Verwenden Sie bei Verwendung von Spring 4.2 (Spring Boot 1.3) bitte Version 1.1.1.

Bibliotheksversion

In Version 1.2 wurden die folgenden Bibliotheksversionen aktualisiert.

Bibliotheksname 1.1.1 Version 1.2.Version von 0 1.2.1 Version 1.2.2 Versionen
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

Struktur der Artefaktabhängigkeit

In Version 1.2 wurde die Abhängigkeitsstruktur von "mybatis-spring-boot-Starter" und "mybatis-spring-boot-autoconfigure" überprüft. Dies ist eine Antwort auf einen Kommentar von Stéphane Nicoll, einem der Hauptverantwortlichen von Spring Boot.

Insbesondere ... In 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

In Version 1.2 ist jedoch

[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

Es ist geworden. Was sich geändert hat, ist ... In Version 1.1 hängt "mybatis-spring-boot-Starter" nur von "mybatis-spring-boot-autoconfigure" ab, und "mybatis-spring-boot-autoconfigure" ist MyBatis. Es hatte eine Abhängigkeit von MyBatis-Spring und Spring Boot. Auf den ersten Blick scheint es kein Problem zu geben, aber tatsächlich spielt "mybatis-spring-boot-autoconfigure" auch die Rolle des Starters, und dieser Teil unterscheidet sich von der Idee von Starter und AutoConfigure, die von Spring Boot bereitgestellt werden !! Es war das.

Dies ist ... Wenn Sie nur das AutoConfigure-Artefakt ** hinzufügen, sollten Sie verhindern, dass die Spring Boot-Anwendung Nebenwirkungen hat (die Autokonfiguration wird unwirksam), und die Autokonfiguration aktivieren. Starter ist die Rolle, um die dafür erforderlichen abhängigen Bibliotheken auf einmal zu lösen! !! Es scheint so.

Warning: Wenn Sie als abhängiges Artefakt "mybatis-spring-boot-Starter" angeben, sind Sie von dieser Änderung nicht betroffen, wenn Sie jedoch "mybatis-spring-boot-autoconfigure" angeben , Bitte ändern Sie, um "mybatis-spring-boot-Starter" anzugeben, wenn Sie Version 1.2 verwenden.

Hinzufügen von "mybatis.configuration-properties"

Ab Version 1.2 wurde eine neue Eigenschaft (mybatis.configuration-properties) hinzugefügt, um den Wert anzugeben, der durch den Platzhalter ersetzt werden soll ($ {Schlüsselname}). Platzhalter können in MyBatis-Konfigurationsdateien, Mapper-XML-Dateien, SQL-definierten Substitutionsvariablen und einigen Anmerkungswerten verwendet werden.

Das Format, das in der Eigenschaft angegeben werden kann, ist

mybatis.configuration-properties.Schlüsselname=Schlüsselwert

Und ... zum Beispiel

src/main/resources/application.properties


mybatis.configuration-properties.db.schema=prod

Wenn Sie es als definieren, können Sie es wie "$ {db.schema}" referenzieren.

Dies ist ... Wird in der MyBatis-Einstellungsdatei ausgedrückt

mybatis-config.xml


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

Ausgedrückt mit org.mybatis.spring.SqlSessionFactoryBean von 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>

Wird sein.

Note: Eigentlich ... In Version 1.1.1 kann dasselbe erreicht werden, indem wie folgt definiert wird. Diese Methode kann auch in Version 1.2 verwendet werden. Wenn derselbe Schlüsselname vorhanden ist, hat der in Version 1.2 angegebene Wert in "mybatis.configuration-properties" Vorrang.

mybatis.configuration.variables.db.schema=prod

Zum Beispiel ... Definieren Sie umgebungsunabhängige Werte (oder Standardwerte) in mybatis.configuration.variables und verwenden Sie mybatis.configuration-properties in der Eigenschaftendatei für jedes Profil (für jede Umgebung). Sie können es auch verwenden, um umgebungsabhängige Werte zu überschreiben.

Zusammenarbeit zwischen Eigenschaftsschlüsseln unter mybatis.configuration und IDE

Ab Version 1.1 wird die Eigenschaft (mybatis.configuration. *) Zum Konfigurieren von org.apache.ibatis.session.Configuration unterstützt, der Eigenschaftsschlüssel wird jedoch für IDEs wie STS und IntelliJ IDEA vervollständigt. Es wurde nicht gezielt. Dieser Fehler wird in Version 1.2 behoben.

Note: Allerdings ... diesmal gibt es ein anderes Problem (gh-127), dass der Eigenschaftsschlüssel dupliziert wurde ... Dies scheint ein Fehler im Maven-Bundle-Plugin zu sein, das zur Erstellungszeit verwendet wurde und in Version 1.2.1 behoben wird.

** 10.04.2017: Nachtrag ** Das Problem mit doppelten Eigenschaftsschlüsseln wurde in Version 1.2.1 behoben! !!

Hinzufügen der Schnittstelle "ConfigurationCustomizer"

[Änderungen in 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).

Hinzufügung von "@ MybatisTest" (Mybatis-Spring-Boot-Starter-Test)

Änderungen in Version 1.3 Bitte beziehen Sie sich auf.

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