我有一个项目设置,其中包含Spring JPA配置的通用模块(JPA.jar)。
@Configuration
@EnableJpaRepositories({"com.db.jpa.repository"})
@EnableTransactionManagement
public class Jpa {
// ...
}
我打算从Web服务(春季启动)中调用配置,并具有从JPA.jar导入JPA配置的配置。
@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
找不到任何说明这对于Spring @Import
是非法的文档。但是,我看到这是使用类路径前缀对@ImportResource
的资源完成的。
我可以使用通用的JPA模型和存储库为每个Web服务组件包含一组配置,但是只是想知道是否可以从依赖项jar集中使用@Configuration(s)
来聚合@Import
。
谢谢。
答案 0 :(得分:0)
您可以将@Import用于其他jar的配置类。我认为您收到此错误是因为jar并未在pom.xml中定义为依赖项(如果您当然使用maven的话),这就是Spring找不到它的原因。