Spring Boot - EnableAutoConfiguration with Exclude not working
I am using the latest spring boot version and I am trying to setup an application but I want to disable the DataSource configuration. My configuration class looks like this:
@Configuration
@ComponentScan
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class ApiApplicationConfig { }
but when I run the application, I am getting the following stacktrace:
Caused by: org.springframework.beans.factory.BeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath.
at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.getDriverClassName(DataSourceProperties.java:137)
at org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$NonEmbeddedConfiguration.dataSource(DataSourceAutoConfiguration.java:116)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162)
... 31 more
Am I missing anything in my configuration to completely disable datasource configuration? I will be manually setting up a DataSource, so I dont want spring to handle this for me.
이것은 이상한 상황인 것 같습니다.DataSourceAutoConfiguration.NonEmbeddedDataSourceConditionDataSource 클래스 로더를 찾지만 DataSource는 찾을 수 없습니다.통합 테스트를 실행하는 동안 스프링 부트 1.2.2에서 이 문제가 발생했습니다.
어쨌든 우리는 뛰었습니다.gradle dependenciestomcat-bootbc에서 무엇을 끌어 들였는지 알아내고 결국 우리의 봄-boot-bootbc 의존성을 평범한 봄-bootbc로 대체했습니다.의존성에 Tomcat-jdbc가 없는 경우 중단점을 설정하는 데 도움이 될 수 있습니다.DataSourceAutoConfiguration.NonEmbeddedDataSourceCondition.getDataSourceClassLoader()어떤 운전자를 찾는지 알아보기 위해서입니다.
When you manually configure your datasource, spring Boot will use your configuration and wouldn't try to initialize embedded datasource.
BTW, Spring boot by default uses these properties from application.properties to create datasource bean:
spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
Take a look at this section of Spring Boot docs for more details about data source auto-configuration
The only thing that helped my exclusion problem was to exclude the tomcat jdbc dependency from the spring configuration:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</exclusion>
</exclusions>
</dependency>
I had an issue when using @Configuration, @EnableAutoConfiguration and @ComponentScan while trying to exclude specific configuration classes, the thing is it didn't work!
Eventually I solved the problem by using @SpringBootApplication, which according to Spring documentation does the same functionality as the three above in one annotation.
@SpringBootApplication(exclude= {Foo.class})
public class MySpringConfiguration {}
@Configuration
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
By using this we can disable the spring boot embedded database configuration.
Its because when you disable the datasource config, spring boot uses in-memory database which is not present in your classpath. You have to add in-memory database dependency in your classpath -
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
이는 사용 시 동일한 문제가 발생합니다.@DataJpaTest
언급URL : https://stackoverflow.com/questions/28158094/spring-boot-enableautoconfiguration-with-exclude-not-working
'programing' 카테고리의 다른 글
| 텍스트로 옵션을 선택하려면 어떤 선택기가 필요합니까? (0) | 2023.09.06 |
|---|---|
| 크롬이 AJAX 폼의 비밀번호를 기억하게 하는 방법? (0) | 2023.09.06 |
| Oracle의 데이터베이스 스키마를 덤프 파일로 내보내는 방법 (0) | 2023.09.06 |
| 64비트 요소를 통해 루프를 벡터화하는 것이 대용량 버퍼에 비해 성능이 향상되지 않는 이유는 무엇입니까? (0) | 2023.09.06 |
| date_format 시간이 ":"인 경우 경고가 생성됩니다. (0) | 2023.09.06 |