복붙노트

[SPRING] 어떻게 주석 @ 자바 스프링에서 작동합니까? [복제]

SPRING

어떻게 주석 @ 자바 스프링에서 작동합니까? [복제]

다음과 같은 코드가 있습니다.

저장소

@Repository
public interface EquipmentRepository extends JpaRepository<Equipment, Integer>{

Equipment findById(int id);
}

서비스

@Service
public class EquipmentServiceImpl implements EquipmentService {

@Autowired
EquipmentRepository equipmentRepository;

@Override
public Equipment findById(int id) {
    return equipmentRepository.findById(id);
   }
}

나는 왜 내가 'Interface EquipmentRepository'의 메소드를 호출 할 수 있는지 궁금하다. EquipmentRepository는 인터페이스입니다, 그렇죠?

해결법

  1. ==============================

    1.Spring Repository는 DAO를 DI 컨테이너로 임포트 할 책임이 있으며 또한 Spring DataAccessException에 대한 체크되지 않은 예외를 발생시킵니다. 스프링 리포지토리 어노테이션은 @Component 어노테이션으로 메타 어노테이션되어 컴포넌트 스 for 닝을 위해 리포지토리 클래스가 사용됩니다.

    Spring Repository는 DAO를 DI 컨테이너로 임포트 할 책임이 있으며 또한 Spring DataAccessException에 대한 체크되지 않은 예외를 발생시킵니다. 스프링 리포지토리 어노테이션은 @Component 어노테이션으로 메타 어노테이션되어 컴포넌트 스 for 닝을 위해 리포지토리 클래스가 사용됩니다.

    그러나 귀하의 경우에는 Spring Data JPA의 JpaRepository를 확장하고 있습니다. Spring 데이터는 자동으로 일반적인 CRUD 연산을 구현합니다. JpaRepository는 모든 기본 crud 작업에 대해 선언 된 메소드가있는 CrudRepository 인터페이스를 확장합니다.

    public interface EquipmentRepository extends JpaRepository<Account, Long> { … }
    

    이 인터페이스를 정의하는 것은 두 가지 목적을 수행합니다.

    @EnableJpaRepositories는 JpaRepository를 확장하는 인터페이스에 대한 com.acme.repositories 아래의 모든 패키지를 검색하고 SimpleJpaRepository 구현에 의해 지원되는 Spring bean을 만듭니다 (스프링 데이터는이 클래스를 통해 CRUD 저장소의 기본 구현을 제공함).

    따라서이 방법을 정의하지 않은 경우에도이 설정을 통해 무차별 한 작업을 수행 할 수 있습니다.

    참조 : https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.repositories

  2. from https://stackoverflow.com/questions/56032969/how-annotation-repository-in-java-spring-work by cc-by-sa and MIT license