Как правильно настроить Guice 4.2.2, Spring-Data-JPA 2.1.4.RELEASE?
Я сейчас использую org.springframework.guice.spring-guice 1.1.3.RELEASE для настройки обоих проектов на совместную работу, но у меня возникла проблема при добавлении автоматически сгенерированного CrudRepository
.
См. мой текущий код:
EmployeeDalConfiguration
@Configuration
@EnableJpaRepositories
@EnableTransactionManagement
@GuiceModule(includeFilters = @Filter(type = FilterType.REGEX, pattern=".*\\.Repository"))
public class EmployeeDalConfiguration {
@Bean
public DataSource dataSource() {
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
return builder.setType(EmbeddedDatabaseType.HSQL).build();
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(true);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan("com.allierh.webservice.modules.employee.dal.entity");
factory.setDataSource(dataSource());
return factory;
}
@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(entityManagerFactory);
return txManager;
}
}
EmployeeEntity
@Entity
public class EmployeeEntity {
@Id
String id;
String firstName;
String lastName;
public EmployeeEntity() {}
}
EmployeeEntityDao
interface EmployeeEntityDao extends CrudRepository<EmployeeEntity, String> {}
EmployeeDalModule
public class EmployeeDalModule extends AbstractModule {
@Override
protected void configure() {
install(new SpringModule(BeanFactoryProvider.from(EmployeeDalConfiguration.class)));
bind(EmployeeRepository.class).to(PostgreEmployeeRepository.class);
}
}
EmployeeRepository
public class EmployeeRepository implements EmployeeRepository {
private final EmployeeEntityDao dao;
@Inject
public EmployeeRepository(EmployeeEntityDao dao) {
this.dao = dao;
}
}
При всем этом Guice выдает ошибку во время выполнения, говоря, что может 'найти реализацию EmployeeEntityDao
.Вот полный стек:
com.google.inject.CreationException: Unable to create injector, see the following errors:
1) No implementation for com.foo.webservice.modules.employee.dal.EmployeeEntityDao was bound.
while locating com.foo.webservice.modules.employee.dal.EmployeeEntityDao
for the 1st parameter of com.foo.webservice.modules.employee.dal.EmployeeRepository.<init>(EmployeeRepository.java:15)
at com.foo.webservice.modules.employee.dal.EmployeeDalModule.configure(EmployeeDalModule.java:12) (via modules: com.foo.webservice.modules.employee.api.EmployeeModule -> com.foo.webservice.modules.employee.dal.EmployeeDalModule)
В конце я просто хочу, чтобы Guice вставлял загрузочные Spring Data JPA репозитории с или без негоSpring-Guice Зависимость.