在没有使用JPA / Hibernate的Spring Boot项目中(但是在类路径上有这些库不能帮助;长篇故事,但在此上下文中完全不可更改),我需要停止导致错误的任何自动配置:
java.lang.IllegalArgumentException: At least one JPA metamodel must be present!
我知道我必须明确排除JPA / Hibernate自动配置。我在@SpringBootApplication
- 带注释的Java类和application.properties
文件中都这样做。
@SpringBootApplication
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class })
@ComponentScan(basePackages = { "com" })
@EnableAsync
public class Application extends SpringBootServletInitializer {
...
}
和
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
此外,我已通过查看--debug
输出验证了这些自动配置已被排除:
Exclusions:
-----------
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
但是,当我没有定义JPA @Entity
时,它会失败。
为什么会这样?