У меня есть приложение для весенней загрузки, подобное этому:
package my.package;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration;
import org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration;
@SpringBootApplication
public class MySpringBootApp{
public static void main(String[] args) {
SpringApplication.run(MySpringBootApp.class, args);
}
}
У меня есть служба в пакете my.package.service
@Service
public class MyService {
private ServiceInADifferentJar dep;
public MySerivce(ServiceInADifferentJar dep) {
this.dep = dep;
}
}
Класс ServiceInADifferentJar
является @Service
аннотированный класс в другом JAR, который я включаю как зависимость maven.
JAR имеет такую файловую структуру:
src/main/java
- some.package.repository
MyRepository.java
- some.package.service
ServiceInADifferentJar.java
MyRepository
- это аннотированный интерфейс @Repository
, расширяющийВнутренний интерфейс Spring Data.
ServiceInADifferentJar
получает в конструктор MyRepository
.
Когда я запускаю приложение, я получаю сообщение об ошибке, ServiceInADifferentJar
не может быть найдено.
Затем я добавил это к своему SpringBootApp
@SpringBootApplication(scanBasePackages = {"some.package"})
и ServiceInADifferentJar
найдено, но не MyRepository
.
Почему бы и нет?Почему не все подпакеты some.package
в другом JAR сканируются?
* РЕДАКТИРОВАТЬ *
Репозиторий
package some.package.repository;
@Repository
public interface MyRepository extends MongoRepository<SomeEntity, String> {
}