[Spring] 자주 쓰는 어노테이션

최연·2023년 1월 3일
0

어노테이션(Annotation)이란?

자바에서 어노테이션(Annotation)이란 주석을 의미한다.
스프링 프레임워크 기반의 작업을 많이 하는 개발자라면 자주 사용하는 것인데, 소스코드에 추가해서 사용할 수 있는 메타 데이터의 일종이라고 볼 수 있다.

어노테이션의 특징은 아래와 같다

  1. 작성 문법 에러 체크하도록 정보 제공
  2. 배포 시 코드 자동 생성 할 수 있도록 제공
  3. 런타임에 특정 기능 실행 정보 제공

MVC 관련

MVC란? 소프트웨어가 서비스하는 방식에 대한 패턴을 지칭. 어떤 프로임워크나 라이브러리를 지칭하는 것이 아니며, 서비스하는 방식에 대한 하나의 아이디어 디자인 패턴이다.

@Controller

package hello.hellospring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@Controller
public class HelloController {
	...
}

사용자의 요청이 진입하는 시점 : @Controller
요청에 따라 어떤 처리를 할지 결정해주는 역할 : 일종의 역할분담

@Service

import org.springframework.stereotype.Service;
@Service
public class MemberService {
	...
}

비즈니스 로직을 다음 Service Class임을 명시하는 어노테이션이다.
다른 어노테이션과 다르게 @Component에 추가된 기능이 없다.
나중에 추가적인 핸들링(handling)을 해줄 수도 있으니 비즈니스 로직에는 해당 어노테이션을 사용하는 것이 좋다!

@Repository

@Repository
public class MemberMemoryRepository implements MemberRepository {
	...
}

DAO에 특화된 어노테이션으로 @Component 어노테이션을 써도 상관없다.

@ResponseBody, @RequestBody

@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name, Model model){
	return "hello " + name; //"hello spring"
}

@ResponseBody는 Body 내용으로 매핑.

public String age(@RequestBody String req) {
		System.out.println(req);
	}
 // System.out -> name=yeon&age=27

@RequsetBody는 HTTP 요청의 본문 body부분이 자바 객체 그대로 전달.

@RequestParam

@RequestParam

public String helloMvc(@RequestParam(name = "name", required = true) 
String name, Model model){
        model.addAttribute("name", name);
        return "hello-template.html";
 }	

단일 요청 파라미터를 method 파라미터에 넣어주는 어노테이션이다.
@RequsetParam 어노테이션의 기본값으로 지정해주면 된다.

의존성 주입 어노테이션

@Autowired

 @Autowired
    public MemberController(MemberService memberService){
        this.memberService = memberService;
    }

의존성을 주입시키는 어노테이션이다.
의존 관계를 자동으로 설정해주며, Controller Class에서 DAO or Service에 관한 객체들을 주입시킬때 많이 사용한다.
비슷한 것으로는 @Inject가 있는데 @Autowired와 차이점은
@Autowired은 스프링 지원.
@Inject는 자바 지원.

profile
프로그래머

0개의 댓글

관련 채용 정보