Я хотел бы использовать spring -data-jpa и CrudRepository<T, ID extends Serializable>
. Но я не могу получить его автоуведомленным. (все другие службы в одном пакете правильно подключены):
@Service
public class UserService {
@Resource
private UserRepo repo;
//this does neither work
//@Autowired
//private CrudRepository<User, Long> repo;
}
public interface UserRepo extends CrudRepository<User, Long> {
}
@Entity
public class User {
@Id
private Long id;
}
Результат:
Вызвано: org.springframework.beans.factory.BeanCreationException: Ошибка при создании bean с именем "userService": инжекция ресурса зависимости не удались; вложенное исключение org.springframework.beans.factory.NoSuchBeanDefinitionException: Нет квалификационный bean типа [UserRepo], найденный для зависимости: ожидается в наименее 1 bean, который квалифицируется как кандидат на автоукрепление для этого зависимость. Аннотации зависимостей: {@javax.annotation.Resource(shareable = true, mappedName =, description =, name=, type = class java.lang.Object, lookup =, AuthenticationType = КОНТЕЙНЕР)}
Что здесь может быть неправильным?
В документах я думаю, что он должен работать без написания реализации:
В типичном приложении Java вы ожидаете написать класс, который реализует CustomerRepository. Но вот что делает Spring Data JPA настолько мощный: вам не нужно писать реализацию интерфейс репозитория. Spring Данные JPA создает реализацию на когда вы запускаете приложение.
Обновлен SpringConfig:
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories("my.package")
public class AppConfig {
@Bean
public LocalContainerEntityManagerFactoryBean emf() throws ClassNotFoundException, PropertyVetoException {
LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean();
emf.setDataSource(dataSource());
emf.setPackagesToScan("my.package");
emf.setJpaVendorAdapter(jpaAdapter());
emf.setJpaProperties(jpaProterties());
return emf;
}
}
Результат: отсутствует emf, что странно, поскольку у меня уже есть рабочие DAO-сервисы, где я могу без проблем autwire EntityManager
и EMF
.
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#1a6e658': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' is defined
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:336)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:632)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:442)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1094)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:989)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:276)
... 50 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:641)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1159)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:282)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
... 58 more