kok202
스프링 부트 Annotation - 기본

2019. 1. 22. 20:51[정리] 기능별 개념 정리/스프링 부트

 


  Application에서 사용하는 Annotation


 @SpringBootApplication

각종 스프링을 위한 Annotation을 한꺼번에 등록

 @MapperScan(value="com.example.springtuto.Mapper")

Spring Application 위에 입력해서 Mapper를 등록

 

컨트롤러에서 사용하는 Annotation


 @Controller

View page를 위한 컨트롤러 등록

 @RestController

Rest API를 위한 컨트롤러 등록

 @RequestMapping("/member")

Rest API에 접근하기 위한 path 지정

컨트롤러 상단, 메소드 상단에서 사용가능

주로 컨트롤러에서 사용

 @GetMapping("/select")

@RequestMapping(value="/select", method = RequestMethod.GET))와 동일, 주로 메소드에서 사용

 @PutMapping("/insert")

@RequestMapping(value="/insert", method = RequestMethod.PUT))와 동일, 주로 메소드에서 사용 

 @PostMapping("/update")

@RequestMapping(value="/update", method = RequestMethod.POST))와 동일, 주로 메소드에서 사용

 @DeleteMapping("/delete")

@RequestMapping(value="/delete", method = RequestMethod.DELETE))와 동일, 주로 메소드에서 사용

 @PathVariable String id

@RequestMapping 안의 {id} 와 같이 path가 변수일 경우 매개변수로 받아서 사용할 수 있음

 @RequestParam("id") String id

@RequestMapping 에 정의한 path 뒤에 "?id=" 와 같이 파라미터가 따라 오는 경우 매개변수로 받아서 사용할 수 있음

 @RequestBody MemberDTO member

@RequestMapping 으로 넘어오는 요청에 json같은 요청이 있을 경우 매개변수로 받아서 사용할 수있음


  DAO에서 사용하는 Annotation


 @Service

DAO 안의 여러 메소드를 사용하여 비즈니스 로직을 구현하는 컴포넌트에 등록

 @Transactional

해당 Service에서 실행되는 메소드는 Transactional 하게 동작한다고 지정 

 @Repository

DAO, Repository, Mapper 클래스에 등록

하나의 메소드는 하나의 쿼리를 실행한다.


 DTO에서 사용하는 Annotation


 @Data

DTO 에 등록 (lombok)

 @NotNull

DTO 변수에 등록 

 
변수에서 사용하는 Annotation

 @Autowired

변수의 타입에 맞춰 연결됨, 안되면 이름으로 시도 (스프링)

 @Inject

변수의 타입에 맞춰 연결됨, 안되면 타입으로 시도 (자바)

 @Resource

수의 이름에 맞춰 연결됨, 안되면 이름으로 시도 (자바)

 @Autowired 
 @Qualifier("이름")

스프링에서 지원, 변수 이름에 맞춰 연결되게 강제하고 싶을 때 씀

의존성 주입을 원하는 변수의 타입이 인터페이스일 경우 

구현 클래스가 여러개일 수 있다. 

이 때 원하는 데이터를 좀 더 확실히하기 위해 사용




간단한 예시

@RestController

class MemberController{

@GetMapping("get/{id}")

public String getMemberByID(@PathVariable String id){

~

}

@GetMapping("get/all")

public String getMemberAll(){

~

}

@PutMapping("/insert")

public MemberDTO insertMember(@RequestBody MemberDTO member){

~

return member;

}

@DeleteMapping("/delete")

public String deleteMember(@RequestParam("id") String id){

~

}




덧붙임

 @RequestMapping(value="/path",

methods="",

params="",

headers="",

consumes="application/json

produces="",

custom="")




컴포넌트의 하위 관계

@Component 

↘@Controller

↘@Service

↘@Repository




@Bean vs @Component

@Bean : 라이브러리와 같이 사용자가 만들지않은 클래스를 빈으로 등록할 때

@Component : 사용자가 만든 클래스를 빈으로 등록할 때




의존성 주입을 받는 방법

1. Constructor 주입 방식 : 컴포넌트 생성자의 매개 변수에 주입을 원하는 변수가 있을 경우 Spring이 자동으로 주입해준다.

2. Setter @Autowired 주입 방식 : 주입을 원하는 멤버 변수의 Setter 위에 @Autowired를 붙이는 경우

3. 필드 @Autowired 주입 방식 : 주입을 원하는 멤버 변수 바로 위에 @Autowired를 붙이는 경우




'[정리] 기능별 개념 정리 > 스프링 부트' 카테고리의 다른 글

Controller to model flow  (0) 2019.03.21
스프링 부트 Annotation - 설정  (0) 2019.03.17
스프링 부트 요약  (0) 2019.01.23
스프링 부트 Mybatis  (0) 2019.01.22
스프링 부트 Setup  (0) 2019.01.22