-
Notifications
You must be signed in to change notification settings - Fork 41.4k
Closed
Labels
status: invalidAn issue that we don't feel is validAn issue that we don't feel is valid
Description
I want to exclude the foo repository from my @DataJpaTest
annotated test.
@RunWith(SpringRunner.class)
@DataJpaTest(excludeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern = "com\\.sandbox\\.foo.repository\\..*"))
public class BarRepositoryTest {
@Autowired
private BarRepository repository;
@Test
public void test() {}
}
Somehow this isn't working and Spring Boot tries to autowire the custom implementation of the foo repository, which fails, because no qualifying Bean of type FooService could be found. I guess this makes sense, since FooService isn't JPA related and shouldn't be picked up by @DataJpaTest.
Foo repository custom implementation:
public class FooRepositoryImpl implements FooRepositoryCustom {
@Autowired
private FooService fooService;
}
Foo repository configuration:
@Configuration
@EnableJpaRepositories(entityManagerFactoryRef = "fooEntityManagerFactory", transactionManagerRef = "fooTransactionManager", basePackages = "com.sandbox.foo")
public class FooDbConfig {
@ConfigurationProperties(prefix = "foo.datasource")
public HikariDataSource dataSource() {
return DataSourceBuilder.create().type(HikariDataSource.class).build();
}
@Bean(name = "fooEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder) {
return builder.dataSource(dataSource()).packages("com.sandbox.foo.entity").persistenceUnit("foo").build();
}
@Bean(name = "fooTransactionManager")
public PlatformTransactionManager transactionManager(
@Qualifier("fooEntityManagerFactory") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
Bar repository configuration:
@Configuration
@EnableJpaRepositories(entityManagerFactoryRef = "fooEntityManagerFactory", transactionManagerRef = "fooTransactionManager", basePackages = "com.sandbox.foo")
public class FooDbConfig {
@ConfigurationProperties(prefix = "foo.datasource")
public HikariDataSource dataSource() {
return DataSourceBuilder.create().type(HikariDataSource.class).build();
}
@Bean(name = "fooEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder) {
return builder.dataSource(dataSource()).packages("com.sandbox.foo.entity").persistenceUnit("foo").build();
}
@Bean(name = "fooTransactionManager")
public PlatformTransactionManager transactionManager(
@Qualifier("fooEntityManagerFactory") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
Main application class:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Spring Boot Version: 2.0.6.RELEASE
Metadata
Metadata
Assignees
Labels
status: invalidAn issue that we don't feel is validAn issue that we don't feel is valid