Я пишу пример репозитория jpa и получаю исключение времени выполнения типа UnsatisfiedDependencyException.
Вот моя программа:
@Configuration
@EnableJpaRepositories(basePackageClasses = { PersonRepository.class, ProfessionRepository.class})
@ComponentScan( basePackageClasses =MyService.class)
public class SpringDataJpa {
public static void main( String[] args ) {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringDataJpa.class);
service myService = applicationContext.getBean(MyService.class);
}
}
Интерфейс сервиса:
public interface service {
void add( Person person );
List<Person> getListOfPersons();
}
Реализация, выбрасывающая исключение:
@Service
public class MyService implements service {
@Autowired
PersonRepository personRepository;
@Override
public void add( Person person ){
System.out.println("saved");
}
@Override
public List<Person> getListOfPersons() {
return null;
}
}
Репозитории:
@Repository
public interface PersonRepository extends JpaRepository<Person, Integer> {
}
@Repository
public interface ProfessionRepository extends JpaRepository<Profession, Integer> {
}
Исключение, которое я получаю:
Исключение в потоке «основной» org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка при создании bean-компонента с именем «myService»: неудовлетворенная зависимость, выраженная через поле «personRepository»; вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем «personRepository»: сбой постобработки определения объединенного компонента; вложенным исключением является java.lang.NoClassDefFoundError: javax/persistence/SynchronizationType
Когда я проверил это обсуждение, я добавил предложенные зависимости. Мои зависимости в файле pom.xml:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>LATEST</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>LATEST</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>LATEST</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.9.4</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>LATEST</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>LATEST</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>LATEST</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.197</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>2.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
How to solve this error?
Мой второй вопрос: должны ли мы использовать @EnableJpaRepositories
, если мы используем Spring Boot?