@Import не может объединить аннотированный конфиг из зависимого фляги - PullRequest
0 голосов
/ 29 октября 2018

У меня есть настройка проекта, где общий модуль (JPA.jar) содержит конфигурацию Spring JPA.

@Configuration
@EnableJpaRepositories({"com.db.jpa.repository"})
@EnableTransactionManagement
public class Jpa {
  // ...
}

Я намереваюсь вызвать конфигурацию из веб-службы (весенняя загрузка) и получить конфигурацию, импортирующую конфигурацию JPA из JPA.jar.

@Configuration
@Import(com.db.config.Jpa.class)
public class JpaApp {
}

Это происходит со следующей ошибкой:

Caused by: java.io.FileNotFoundException: class path resource [com/db/config/Jpa.class] cannot be opened because it does not exist
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:180)
    at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:51)
    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:103)
    at org.springframework.boot.type.classreading.ConcurrentReferenceCachingMetadataReaderFactory.createMetadataReader(ConcurrentReferenceCachingMetadataReaderFactory.java:88)
    at org.springframework.boot.type.classreading.ConcurrentReferenceCachingMetadataReaderFactory.getMetadataReader(ConcurrentReferenceCachingMetadataReaderFactory.java:75)
    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:81)
    at org.springframework.context.annotation.ConfigurationClassParser.asSourceClass(ConfigurationClassParser.java:731)
    at org.springframework.context.annotation.ConfigurationClassParser$SourceClass.getRelated(ConfigurationClassParser.java:1007)
    at org.springframework.context.annotation.ConfigurationClassParser$SourceClass.getAnnotationAttributes(ConfigurationClassParser.java:988)
    at org.springframework.context.annotation.ConfigurationClassParser.collectImports(ConfigurationClassParser.java:536)
    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:509)
    at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:300)
    at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:245)
    at org.springframework.context.annotation.ConfigurationClassParser.processImports(ConfigurationClassParser.java:635)
    ... 40 more

Невозможно найти какую-либо документацию, которая говорит, что это незаконно для @Import Spring. Однако я вижу, что это сделано для ресурсов с @ImportResource, используя префикс classpath.

Я могу включить набор конфигов для каждого компонента веб-сервиса, используя обычные модели JPA и репозитории, но мне просто интересно, возможно ли агрегирование @Configuration(s), в частности, с использованием @Import из jar зависимостей.

  1. Возможно ли это?
  2. Если это незаконно, есть ли какое-либо объяснение этому.

Заранее спасибо.

1 Ответ

0 голосов
/ 29 октября 2018

Вы можете использовать @Import для настройки классов из других jar-файлов. Я думаю, что вы получаете эту ошибку, потому что ваш jar не определен как зависимость в вашем pom.xml (если вы, конечно, используете maven), поэтому Spring не может его найти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...