<aside> 💡
알게 됐어요!
**public class SingletonService {**
**// static으로 선언하면 class level에 올라가기 때문에 하나만 존재 가능**
**private static final SingletonService instance = new SingletonService();**
**public static SingletonService getInstance() {**
**// 메서드를 통해서만 생성된 객체에 접근이 가능하다**
**//**
**public static SingletonService getInstance() {**
**// 메서드를 통해서만 생성된 객체에 접근이 가능하다**
**// 구현 객체를 사용해야 하기 때문에 DIP를 위반한다**
**return instance;**
**}**
**private SingletonService() {**
**// 생성자를 private으로 설정한다**
**}**
**public void logic() {**
**System.out.println("싱글톤 객체 로직 호출");**
**}**
**}**
JPA에서 Repository
인터페이스는 SimpleJpaRepository
를 상속받아 구현됩니다. @Repository
어노테이션은 스프링의 빈으로 등록되며, 이를 통해 스프링이 런타임 시에 리플렉션을 이용해 해당 인터페이스에 대한 구현체를 생성합니다. 이때, @Entity
로 정의된 클래스는 JPA의 엔티티 매핑 규칙을 따르고, 기본 생성자(@NoArgsConstructor
)를 통해 인스턴스가 생성됩니다. 이렇게 생성된 Repository
인터페이스(FundingRepository 등)는 데이터베이스 작업을 처리하는 데 사용됩니다.
</aside>