Описание проблемы
У меня есть приложение Spring Boot
Java
, которое использует MyBatis
Mappers
, которое общается с DB2
через interfaces
сXML
.
Эта настройка работает правильно при запуске в качестве приложения Spring Boot
в Eclipse IDE
.Однако, когда я использую Mavan
, чтобы создать приложение в виде файла WAR
и развернуть его на внешнем Tomcat
сервере, внезапно я получаю ошибки, которые не могут быть найдены моими сопоставителями при развертывании приложения:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'springmapper': Unsatisfied dependency expressed through field 'thingTypes'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'otherthingtypes': Invocation of init method failed; nested exception is
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.myapplicaton.dao.MybatisMapper.selectByExample
У меня такое ощущение, что при работе с WAR
приложение больше не сканирует эти MyBatis
mappers
как mappers
.Мне нужно изменить некоторые настройки, но я не могу понять, что.
=================== *===== *
Текущая конфигурация (Работает при работе на Eclipse IDE
как приложение Spring Boot
) ..
(1) Все преобразователи MyBatis
java
в com.myapplicaton.dao имеют @Mapper
аннотация:
package com.myapplicaton.dao;
@Mapper
public interface MybatisMapper {
List<Thing> selectByExample(ThingExample example);
//...
}
(2) Добавлена MapperScan
к запуску приложения ..
@SpringBootApplication
@MapperScan({"com.myapplicaton.dao","com.myapplicaton.other.mappers"})
public class MyApplication extends SpringBootServletInitializer
{
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
(3) Использовать MyBatis
Mappers в @Autowired
классах:
@Configuration
public class SomeConfig {
@Bean(name = "springmapper")
@Scope(value = "singleton")
public SpringMapper getSpringMapper() {
return new SpringMapper();
}
@Bean(name = "thingTypes")
@Scope(value = "singleton")
public ThingTypes thingTypes() {
return new ThingTypes();
}
}
package com.myapplicaton.other.mappers;
public class SpringMapper {
@Autowired
ThingTypes thingTypes;
//...
}
package com.myapplicaton.beans;
public class ThingTypes {
@Autowired
MybatisMapper mybatisMapper;
//...
}
====================
Вопрос
Почему это не работает при развертывании как WAR
?