🐯
경민민 IT 핸드북
  • Orientation
    • 전달사항
    • 복습방법
    • 수료한 선배의 한마디
    • 간단 자기소개
    • 스터디
  • 백엔드
    • Java
      • 1장 프로그래밍 기초
      • 2장 자바 메모리구조
        • 1. Stack
        • 2. Heap
      • 6장 객체
      • 8장 상속
      • 9장 다형성
      • 10장 추상클래스와 인터페이스
      • 13장 Generic
      • 14장 Thread
      • 15장 Network
      • 16장 Lamda
        • 1. 내부 클래스 (Inner Class)
          • DTO , VO, Builder Pattern
        • 2. 람다 표현식 (Lambda Expression)
        • 3. 스트림 API (Stream API)
          • Optional
      • 17장 Enum
  • 프론트
    • Node.js
    • Java Script
      • ES6+
        • Node.js로 자바스크립트 실행
        • let , const , var
        • Destructuring문법
          • Rest(...) 문법
        • Arrow Function
        • 모듈
        • ETC
    • Type Script
      • 개요
      • TS설치 및 환경설정
      • 타입스크립트 기본
        • 기본 자료형들과 타입추론
        • Object, Array , Tuple
        • Any, Unknown, Union Type
        • Function Type
          • Type Assertion && Narrowing
          • Never type
        • Type Aliases와 Interface
        • 리터럴 타입
        • 함수 추가 문법
        • Class문법
        • 객체 타입 추가 문법
        • 실습문제 1차
        • 실습문제 2차
        • 실습문제 3차
    • React
      • 개요
      • SPA 와 MPA
        • SEO(작성예정)
      • 리액트 프로젝트 생성(18.3.1.ver)
        • HTML + react 샘플
        • CRA 와 Vite 비교
      • 리액트 개념들
        • Component
          • 클래스 컴포넌트(작성예정)
          • 함수형 컴포넌트(작성예정)
        • JSX
        • React Virtual Dom
          • Reconciliation
        • hook
          • useState
        • 리액트 데이터 전달
          • FLUX
      • 백엔드 서버 연동
        • 비동기요청
        • 웹소켓
        • Promise(작성예정)
      • 실습문제 1
      • 실습문제 2
      • 실습문제3
      • 실습문제4
  • 프레임워크
    • Spring
      • Spring 개발환경 구축
        • 프로젝트 환경설정
        • 프로젝트 생성
          • MVC Project 생성이슈
        • Maven 설정
        • web.xml 설정
        • Spring Bean Configuration.xml 설정
      • Spring Legacy Project
        • Spring 요청 및 응답 흐름
        • Spring 주요 Annotation
          • 의존성 주입방식의 차이점
          • @ModelAttribute와 유효성검사
          • 비동기처리
          • 스프링 예외처리
        • Logging
        • Pagination
        • Spring File 업로드 및 다운로드
        • Spring WebSocket
        • Spring AOP
      • Spring 라이브러리들(작성예정)
        • Lombok
        • Maven
        • MyBatis
      • Spring 구성 모듈(작성예정)
      • 스프링 과제
    • Spring Boot
      • Spring Boot 개발환경 구축
      • 스프링 부트 프로젝트 생성방법들
        • 프로젝트에서 사용하는 의존성들
      • 스프링 프로젝트 구조
        • SpringBootApplication
      • application.properties
      • Cross Origin
        • CORS
      • WebSocket
        • Stomp(작성중)
      • 로그인(작성중)
      • Spring Security(작성중)
      • 실습문제 Select
      • 실습문제 Update
      • 실습문제 Delete
  • 형상관리(Git)
    • GitHub설정
    • SourceTree를 활용한 깃허브 연동
      • 소스트리 설치
      • Clone
      • Branch
        • Branch Protection rules
          • Branch Protection Rules 상세규칙
        • Rebase 와 Squash (작성예정)
      • Team Project 설정
        • 팀장 프로젝트 셋팅
          • Collaborator
          • .gitignore 설정
        • 팀원 프로젝트 셋팅
        • 공통 프로젝트 진행
  • 프로젝트
    • 진행순서
      • 요구사항 분석 단계
        • 유용한 사이트
      • 프로그램 설계 단계
        • 유용한 사이트
      • 프로그램 구현단계
        • SourceTree를 활용한 Team Project설정
      • 테스트 단계
  • 배포
    • AWS-EC2 배포 연습
    • DevOps
      • IT시스템의 변화와 DevOps
      • DevOps 라이프사이클
    • 젠킨스
      • 도커
        • 도커 설치 방법
        • 도커 기본 명령어들
      • 젠킨스 설치
      • 젠킨스 프로젝트 생성
      • 젠킨스 소스코드 통합 - Github
      • 젠킨스 빌드 설정 - Maven
      • 배포 서버 구축하기
      • 파이프라인 구축
      • AWS 서버 생성
        • AWS 인스턴스 생성
        • AWS - Zenkins 연동
        • AWS - 배포서버 연동
        • AWS - Jenkins CI/CD파이프라인 구축
  • 유용한 사이트 모음
  • SQL
    • SQLD
      • 데이터 모델링의 이해 - 스키마
      • 데이터 모델링의 이해 - ERD
      • 데이터 모델링의 이해 - 정규화
      • 데이터 모델링의 이해 - NULL
      • SQL 기본 및 활용 - WINDOW FUNCTION
    • Oracle
      • 1장 개요
      • 2장 SQL
  • LLM 서비스
    • 1장 LLM에 대한 이해
    • 2장 프롬프트 엔지니어링
      • 프롬프트와 프롬프트 엔지니어링
      • GPT PlayGround
      • 프롬프트 작문 유형
      • 기본 프롬프트 엔지니어링 태크닉
      • 고급 프롬프트 엔지니어링 태크닉
        • ReAct Prompting
        • Active-Prompt
        • Reflexion
        • Graph Prompt
      • OpenAI API설정
      • OpenAI를 활용한 프롬프트 엔지니어링 실습
        • 실습 프롬프트
    • 3장 Lang Chain 프레임워크
      • LangSmith 프레임워크
        • LangSmith를 활용한 LangChain 모니터링 설정
      • LangChain 실습 1 - Prompt
        • 실습 코드
      • LangChain 실습 2 - LLM 캐시와 메모리
    • 4장 RAG
      • Document Loader - 문서 로더
      • Text Splitter - 텍스트 분할
      • Embedding - 임베딩
      • Vector Store - 벡터 저장소
      • Retriever - 검색기
      • ReRanker - 재평가자
      • RAG
Powered by GitBook
On this page
  • Intro
  • MVC관련 어노테이션
  1. 프레임워크
  2. Spring
  3. Spring Legacy Project

Spring 주요 Annotation

PreviousSpring 요청 및 응답 흐름Next의존성 주입방식의 차이점

Last updated 11 months ago

Intro

  • 스프링에는 수천가지 어노테이션이 존재한다. 당연하지만 모든 어노테이션을 외울수는 없고 천천히 둘러보고 싶다면 스프링 메뉴얼을 확인해보면 된다. 다만 메뉴얼의 양이 방대하고 영어로 기술되어 있으므로 하나하나 살펴보기는 너무나 오랜 시간이 걸리므로 현재 문서에서는 프로젝트에서 자주 사용되는 어노테이션들 위주로만 설명을 진행할 예정이다.

MVC관련 어노테이션

  • @Controller : 클래스가 MVC아키텍쳐에서 Controller의 역할을 함을 의미하는 주석. component-scan에 의해 servlet이 관리하는 bean객체로 등록된다 유사 어노테이션 : @Service, @Repository, @Component

  • @RequestMapping : 특정 url패턴에 매핑되는 클래스 및 메서드를 지정하는 주석.

    @RequestMapping("/member") // /member로 들어온 요청은 현재 컨트롤러가 처리함을 의미
    public class MemberController {
    
        @RequestMapping("/login") // /member/login으로 들어온 요청은 현재 메서드가 처리함을 의미.
        public String login(...){
        ...
        }
        
        @RequestMapping("/logout") // /member/logout으로 들어온 요청은 현재 메서드가 처리함을 의미.
        public String logout(...){
        ...
        }
        //모든 메서드 mappingUrl의 앞에 /member가 붙게되므로 class영역에 선언한 @RequestMapping
        //주석은 "공통주소"라고 불린다.
    }

    유사 어노테이션 : @GetMapping, @PostMapping, @PutMapping, @DeleteMapping

  • @Autowired : 스프링 컨테이너에의해 관리되는 bean객체를 주입받는 어노테이션. root-context.xml에서 설정한 모든 bean객체와, servlet-context.xml에서 설정한 bean객체. 내장 bean객체들을 주입받을수 있다.

    @Autowired
    private MemberService mService; // 필드방식 의존성 주입
    
    //@Autowired 클래스내에 생성자가 1개뿐이라면 @Autowired어노테이션 생략 가능
    public Member(MemberService mService){ // 생성자방식 의존성 주입(권장)
        this.mService = mService;
    }
    
    @Autowired
    public void setMemberService(MemberService mService){ // setter방식 의존성 주입
        this.mService = mService;
    }
  • @RequestParam : 클라이언트가 요청시 전달한 파라미터값을 바인딩해주는 어노테이션. 요청 파라미터의 key값과 일치하는 변수 지정시 파라미터값을 가져올 수 있다. 속성을 통해 기본값 설정, 필수값 설정등이 가능하다.

@PostMapping("/login")
public String login(
    @RequestParam(value ="userId" , defaultValue = "mmm" , required= false) String userId ){
    ...
    // 속성의 기능이 필요없다면 어노테이션 생략후 String userId만 작성하여도 파라미터값 바인딩이 이루어진다
}
@PostMapping("/insert")
public String insert(
@ModelAttribute Member m
// 매개변수에 VO클래스가 추가된 경우의 데이터 바인딩 방법은
// 1) 기본생성자호출
// 2) VO클래스이 필드와 일치하는 파라미터값을 setter메서드를 통해 객체 내부에 초기화시킨다
// @ModelAttribute를 생략해도 동일한 동작이 수행된다.
	) {
	...
}


  • 그 밖에 @CookieValue, @SessionAttributes

  • @ExceptionHandler

  • @ControllerAdvice


  • @ResponseBody

  • @RestController

  • @RequestBody

  • @PathVariable

@ModelAttribute : 파라미터로 전송한 값을 특정 model객체. 즉 VO객체로 바인딩할때 사용된다. 명시적으로 추가하든 생략하든 데이터 바인딩은 문제없으나 명시적으로 작성했을때는 추가적인 기능을 이용할 수 있다.

https://docs.spring.io/spring-framework/reference/
각 의존성 주입방식의 특징 및 차이점
추가기능