개발로드

☆KDT 2024-03-21★SpringBoot-Maven-Mapper,@Service,@Repository 본문

JAVA

☆KDT 2024-03-21★SpringBoot-Maven-Mapper,@Service,@Repository

위대한개발자 2024. 3. 27. 17:18

스프링빈


스프링IoC(Inversion of Control, 제어의 역전) 컨테이너에 의해 생성되고 관리되는 객체

IoC 컨테이너가 애플리케이션의 객체를 관리하고 필요한 곳에 주입(DI, Dependency Injection)

스프링 빈을 정의 - xml, annotation, 자바설정 클래스 등을 사용

 

SQL Mapper(Mybatis, Hibernate,...)


database와 자바 객체간의 맵핑을 담당하는 역할을 하는 프레임워크 또는라이브러리

sql 쿼리문을 자바 코드에서 분리하여 관리 => 관심사의 분리

database 테이블의 레코드를 자바 객체로 맵핑하는 기능을 제공

메소드 호출을 (insert(), select(), ...)  통해서 쿼리문을 실행

 

Annotaion


@Repository :

  • 스프링 프레임워크에서 사용, DAO 클래스
  • 스프링이 예외 처리와 트랜잭션 관리를 포함한 다양한 기능을 지원
  • 자동 빈 등록: 스프링의 컴포넌트 스캔 기능을 이용해서 @Repository가 붙은 클래스들을 빈으로 자동 등록
  • database나 외부  API와의 상호 작용을 담당하는 클래스에 사용

 

@Mapper :

  • MyBatis의 xml mapper 파일과 대응되는 mapper interface를 나타냄

 

비즈니스 로직:

  • 업무의 핵심을 담당
  • 애플리케이션에서 특정한 업무나 기능을 수행하기 위해 필요한 처리와 규칙
  • 데이터를 처리, 계산, 변환, 유효성을 검사
  • 애플리케이션이 실제로 서비스를 실행할 때 필요한 로직

서비스 계층:

  • 컨트롤러 한테 요청을 받아서 해당 요청에 대한 비즈니스 로직을 수행하고 데이터 액세스 계층을 통해서 데이터를 처리한 후 결과를 반환하는 역할

 

@Service:

  • 해당 클래스가 서비스 계층(Service Layer)의 구현체임을 나타냄
  • 서비스 빈
  • 스프링의 IoC(Inversion of Control) 컨테이너가 이를 스캔해서 빈으로 등록하고 관리
  • 주로 controller와 데이터 액세스 계층(DAO, repository)간의 중간 단계로서 비즈니스 로직을 수행하고 데이터 처리를 담당
  • 해당 클래스의 인스턴스(객체)를 필요 하는 곳에 의존성 주입(Dependency Injection)을 통해서 사용

 

@Autowired:

  • 스프링 프레임워크에서 사용되는 의존성 주입(Dependency Injection)을 자동화
  • 필드 주입 : 의존성을 주입할 필드에 @Anutowired 사용
    • 의존성이 하나일 때 주로 사용
  • 생성자 주입(Constructor Injection) : 의존성을 주입할 생성자에 @Autowired 사용
    • 주로 의존성이 여러 개일 때 사용되며, 의존성 주입을 보장하기 위해 권장되는 방식
  • 세터 주입(Setter Injection) : 의존성을 주입할 세터 메소드에 @Autowired 사용
    • 이 방식은 선택적인 의존성을 가질 때 사용

여유가 되신다면 제 GitHub에 오셔서 좋은 코드들을 구경해주세요!

 

https://github.com/gimpo5975?tab=repositories

 

gimpo5975 - Overview

gimpo5975 has 6 repositories available. Follow their code on GitHub.

github.com