Spring Boot 2 M3 - MyBatis 1.3.0 - 测试 - 属性'sqlSessionFactory'或'sqlSessionTemplate'是必需的

问题描述 投票:0回答:1

我只在运行Test类时遇到以下错误。这只发生在Spring Boot 2(现在为M3),而Spring Boot 1.5.3则没问题。 MyBatis 1.3.1-SNAPSHOT似乎不可用/已发布,所以我使用1.3.0。

java.lang.IllegalArgumentException:
Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

此外,使用JNDI查找启动外部Tomcat时到目前为止没有问题:mappers和beans加载正常。

的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'

application tests.Java

@ActiveProfiles("test")
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
public class ApplicationTests {

    @Test
    public void contextLoads() {
    }

}

application-test.properties(启动测试时拾取)

spring.datasource.url=jdbc:mysql://...
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=...
spring.datasource.password=...

切换到Spring Boot 2时此配置有什么问题?

Project很快就会在Github上推出。

java spring-boot mybatis spring-boot-test
1个回答
0
投票

我自己找到了解决方案:

由于我使用的是外部Tomcat,因此我从类路径中删除了Hikari conn池,因为没有使用,但是在JUnit测试阶段,缺少JDBC连接池,所以我把它放回去了。

© www.soinside.com 2019 - 2024. All rights reserved.