Spring

Spring, Service 자주 사용하는 어노테이션 정리

greenyellow-s 2025. 3. 18. 09:20
728x90
반응형

 @Service 

  • 해당 클래스가 Spring의 서비스 컴포넌트임을 나타낸다.
  • 비지니스 로직을 처리하는 역할
  • @Component의 확장 개념으로, 자동으로 Spring Bean으로 등록된다.

 

 @RequiredArgsConstructor 

  • Lombok 제공 어노테이션
  • final or @NonNull 이 붙은 필드를 자동으로 생성자 주입
  • 즉, @Autowired 없이 생성자 주입 방식으로 의존성 주입을 처리할 수 있다.

 

 @Slf4j 

  • Lombok에서 제공하는 로깅 어노테이션
  • log.info(), log.debug(), log.error() 등을 사용 할 수 있음
  • 로그 출력을 위해 LoggerFactory.getLogger(ClassName.class)를 직접 선언할 필요가 없다.

 

 @Transactional 

  • Spring의 트랜잭션 관리 어노테이션
  • 해당 클래스 또는 메서드의 데이터 변경 작업을 하나의 트랜잭션으로 묶어 처리
  • 예외 발생 시 자동으로 롤백

Lazy Loading을 사용하면 트랜잭션이 유지되는 범위 안에서만 연관된 엔티티를 조회할 수 있다.

  • 즉, Lazy Loading이 발생하는 시점에 트랜잭션이 활성화되어 있어야 Hibernate가 account 엔티티를 가져올 수 있다.
  • @Transactional이 없다면 Lazy Loading을 통해 조회할 때 프록시 객체만 남고, 실제 데이터를 가져오려는 순간 예외가 발생할 수 있다.
728x90
반응형