[Spring] 스테레오타입 어노테이션과 @RequestMapping

2024. 10. 9. 22:38·Spring

Spring에서 제공하는 스테레오타입 어노테이션은 개발자가 클래스의 역할을 명확하게 정의하고, 해당 클래스의 빈(Bean) 관리를 Spring 컨테이너에게 맡길 수 있게 해준다.

이를 통해 코드의 구조화와 성능 최적화를 달성할 수 있다.

 

스테레오타입 어노테이션 종류

@Component

가장 범용적인 스테레오타입 어노테이션이다. 일반 객체를 Spring 컨테이너에서 관리하도록 할 때 사용한다.

 

@Component를 상속받은 어노테이션

@Component를 상속받은 어노테이션중  @Repository, @Service, @Controller 이렇게 3개를 정리해보려고 한다.

 

@Repository는 데이터 액세스 계층(DAO)에서 사용한다.

@Repository
public class MemberDAO {
// 생략...
}

 

@Service는 비즈니스 로직을 처리하는 계층에서 사용되며, 주로 데이터베이스에서 데이터를 가져와 처리하거나 다른 서비스와 통신하는 역할을 한다.

아래의 MemberService 클래스는 회원가입 로직을 처리한다.

@Service
public class MemberService {

    @Autowired
    private MemberDAO memberDAO;
    // 생략..
    
    }

 

@Controller는 MVC 패턴에서 Controller 역할을 수행하는 클래스에 사용한다.

@Controller("login")
public class LoginController {
	
	@RequestMapping(value="/login.do")
	public String login(HttpSession session, MemberDAO memberDAO, MemberDTO memberDTO) throws Exception {
																// 커맨드 객체
    // 생략..
    	}
    }

 

어노테이션과 인터페이스의 차이

인터페이스를 사용하면 개발의 자유도가 낮아지지만, 구조적으로 편하게 관리할 수 있다. 하지만 성능 면에서는 조금 불리할 수 있다.

반면 어노테이션을 사용하면 개발의 자유도는 높아져서 세부적인 설정에 더 신경 써야 하지만, 그만큼 성능은 더 좋아진다.

 

포트폴리오에서는 어노테이션을 사용하는 게 더 적합하다.

자유도가 높고, 최신 기술 트렌드에 맞춘 개발을 보여줄 수 있어서 더 좋은 인상을 줄 수 있다.

 

Java만 배웠을 때는 어노테이션을 많이 쓰지 않았는데, Spring을 배우면서 어노테이션을 많이 사용하기 시작했는데, 이는 더 좋은 개발자로 성장해가는 과정이라고 생각한다.

 

@RequestMapping과 핸들러 매핑

@RequestMapping("/ex)login.do") 는 핸들러 매퍼를 어노테이션 기반 컨트롤러로 사용할 때, URL과 메서드를 매핑하는 방식이다. 이 어노테이션을 사용하면 특정 URL이 호출될 때 해당 메서드가 실행된다.

 

Spring 컨테이너는 매핑된 메서드의 파라미터를 자동으로 생성해 넘겨주기 때문에, 개발자가 직접 new를 호출할 필요가 없다. 예를 들어, HttpServletRequest request와 같은 파라미터를 Spring 컨테이너가 자동으로 주입해주기 때문에, 개발자가 따로 객체를 생성하지 않아도 NullPointerException이 발생하지 않는다.

 

추가로 @RequestMapping은 HTTP 메서드(GET, POST 등)에 따라 다른 처리를 할 수 있도록 도와준다.

예를 들어, @RequestMapping(method = RequestMethod.GET)과 같이 특정 HTTP 메서드를 지정하여 해당 요청만 처리하도록 설정할 수 있다.

 

또한, @RequestMapping은 파라미터 이름과 객체의 멤버 변수 이름이 일치할 경우, Spring이 알아서 값을 주입해주는 기능도 지원한다. 이는 useBean과 유사한 방식으로, 개발자가 일일이 값을 설정하지 않아도 Spring이 자동으로 바인딩해준다.

 

@RequestMapping을 사용하면 URL과 메서드 매핑이 간결해지고, HTTP 요청 처리에 대한 개발자가 처리해야 할 작업이 줄어들어 개발의 효율성이 높아진다.

 

Spring의 자동 매핑 지원

Spring은 파라미터 이름과 DTO 멤버 변수 이름이 일치하면 자동으로 값이 주입된다.

이는 이전에 JSP에서 usebean을 사용해 자동으로 값을 넣어주던 방식과 유사하다.

public String login(HttpServletRequest request, MemberDTO memberDTO)

 

자동으로 주입되는 MemberDTO는 개발자가 new로 생성하지 않아도, Spring이 관리해 주기 때문에 코드가 간결해지고 유지 보수가 용이해진다.

 

'Spring' 카테고리의 다른 글

[Spring] Tomcat Server 기동 시 Listener와 Spring IoC Container의 초기화 과정  (0) 2024.10.10
[Spring] 2-Layered 아키텍처 정리  (0) 2024.10.10
[Spring] ViewResolver  (1) 2024.10.09
[Spring] DispatcherServlet과 Spring MVC의 핵심 흐름 분석  (0) 2024.10.07
[Spring] DispatcherServlet, ViewResolver , DI 방식 정리  (0) 2024.10.07
'Spring' 카테고리의 다른 글
  • [Spring] Tomcat Server 기동 시 Listener와 Spring IoC Container의 초기화 과정
  • [Spring] 2-Layered 아키텍처 정리
  • [Spring] ViewResolver
  • [Spring] DispatcherServlet과 Spring MVC의 핵심 흐름 분석
yn98
yn98
좌우명 : 여전할 것 인가, 역전할 것 인가? 백엔드 개발자가 되고싶은 역전하고 있는 개발자 꿈나무의 블로그입니다. 개발을 하면서 공부한 것들을 기록합니다. 24.06 ~
  • yn98
    개발 꿈나무
    yn98
  • 전체
    오늘
    어제
    • 분류 전체보기 (131)
      • Python (3)
      • 공부 (7)
      • DB (7)
      • JAVA (24)
      • JSP (9)
      • jQuery (2)
      • HTML (3)
      • Spring (20)
      • 웹 (4)
      • C (1)
      • Git (2)
      • 에러일기 (19)
      • 프로젝트 (6)
      • 책 (21)
        • 멘토씨리즈 자바 (14)
        • 2024 수제비 정보처리기사 (7)
      • 기타 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
    • Notion
  • 공지사항

  • 인기 글

  • 태그

    @repository
    aop
    @service
    codeup 4891 : 행복
    java
    정처기
    티스토리챌린지
    상속
    정처기 실기
    html
    MVC
    어노테이션
    DispatcherServlet
    생성자
    스프링 프레임워크
    이벤트 스케줄러
    recoverabledataaccessexception
    Di
    Spring
    오블완
    정보처리기사 실기
    수제비
    jsp
    2-layered 아키텍처
    @Component
    객체지향
    ViewResolver
    멘토씨리즈 자바
    오버로딩
    정보처리기사
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
yn98
[Spring] 스테레오타입 어노테이션과 @RequestMapping
상단으로

티스토리툴바