我只在運行Test類時遇到以下錯誤。 這隻發生在Spring Boot 2(M3現在),而Spring Boot 1.5.3則可以。 MyBatis 1.3.1-SNAPSHOT似乎不可用/發佈,所以我使用1.3.0。Spring Boot 2 M3 - MyBatis 1.3.0 - 測試 - 屬性'sqlSessionFactory'或'sqlSessionTemplate'是必需的
java.lang.IllegalArgumentException:
Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
此外,啓動外部的Tomcat沒有問題,到目前爲止當JNDI查找:映射器和bean被裝載的罰款。
的build.gradle
compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:${myBatisBootVersion}")
compile('org.springframework.boot:spring-boot-starter-web') {
exclude module: "spring-boot-starter-tomcat"
}
compile("mysql:mysql-connector-java:6.0.6")
compile("org.springframework.boot:spring-boot-starter-log4j2:${springBootVersion}")
compileOnly("javax.servlet:javax.servlet-api:3.1.0")
testCompile("javax.servlet:javax.servlet-api:3.1.0")
testCompile('org.springframework.boot:spring-boot-starter-test')
testCompile("org.mybatis.spring.boot:mybatis-spring-boot-starter-test:1.3.0")
Application.java
@Configuration
@SpringBootApplication(exclude = JmxAutoConfiguration.class)
@MapperScan("eu.davidea.avocadoserver.persistence.mybatis.mappers")
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(final String[] args) {
SpringApplication.run(Application.class, args);
}
}
application.properties
spring.profiles.active=test
個application-local.properties(在本地部署拾起)
spring.datasource.jndi-name='java:comp/env/jdbc/avocadoDB'
ApplicationTests.java
@ActiveProfiles("test")
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
public class ApplicationTests {
@Test
public void contextLoads() {
}
}
應用test.poperties(啓動測試時,拿起)
spring.datasource.url=jdbc:mysql://...
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=...
spring.datasource.password=...
這個配置有什麼問題切換到Spring Boot 2時需要注意什麼?
項目將很快在Github上市。