Я использую весеннюю загрузку 2.0.6.RELEASE в моем многомодульном проекте. В модуле общего модуля у меня есть документ бота
package com.entity;
@Document(collection = "bot")
public class Bot{
@Id
protected String id;
protected String name;
//getters and setters
}
В первом модуле другого модуля у меня есть
package com.first.entity;
@Document(collection = "bot")
@TypeAlias("FirstBotType")
public class FirstBot extends Bot {
private String fieldInFirstBot;
//getter and setter
}
В мастер-модуле у меня есть зависимости от обоих модулей и запуска приложения:
package com.bots;
@SpringBootApplication(scanBasePackages = "com")
@EnableMongoRepositories(basePackages = "com")
public class Launcher {
public static void main(String[] args) {
SpringApplication.run(Launcher.class, args);
}
}
Также у меня есть репозиторий:
public interface BotRepository extends MongoRepository<Bot, String> { }
Когда я запрашиваю repository.findAll()
, он возвращает список, который содержит только Bot
экземпляров вместо FirstBot
. Я могу исправить это, предоставив компонент, который расширяет AbstractMongoConfiguration
, реализует все методы и переопределяет getMappingBasePackages()
:
@Override
protected Collection<String> getMappingBasePackages() {
return Arrays.asList("com.entity", "com.first.entity");
}
Есть ли способ избежать создания компонента AbstractMongoConfiguration
вручную и сказать весенней загрузке: проверять пакеты, которые мне нужны?
Обновление: я добавил @EntityScan("com")
аннотацию, но ничего не изменилось