구멍가게 IT 공부방

Spring Annotation 본문

Programming/Spring

Spring Annotation

방구석코딩 2020. 7. 14. 23:40

@Component

  • component-scan을 선언에 의해 특정 패키지 안의 클래스들을 스캔하고, @Component 어노테이션이 있는 클래스에 대하여 bean 인스턴스를 생성한다.

@Controller, @Service, @Repository

  • @Component 의 구체화
  • bean으로 등록
  • 각각의 클래스가 스프링 프레임워크에게 Controller 혹은 Service 혹은 Repository로 사용되고 있음을 알린다.

@RequestMapping

 

@Controller
@RequestMapping("/home")
public class HomeController {
    /* an HTTP GET for /home */ 
    @RequestMapping(method = RequestMethod.GET) // 2) Handler Level
    public String getAllEmployees(Model model) {
        ...
    }
    
    /* an HTTP POST for /home/employees */ 
    @RequestMapping(value = "/employees", method = RequestMethod.POST) 
    public String addEmployee(Employee employee) {
        ...
    }
}
  • @RequestMapping 에 대한 모든 맵핑 정보는 Spring에서 제공하는 HandlerMapping Class가 가지고 있다.
  • Class Level Mapping
    • 모든 메서드에 적용
    • "/home" url로 들어오는 모든 요청에 대한 처리를 해당 클래스에서 한다는 의미
  • Handler Level Mapping
    • 요청 url에 대한 처리를 해당 메서드가 처리해야 되는 경우
    • "/home/employees" url로 들어오는 POST 요청에 대한 처리를 해당 메서드에서 한다는 의미
  • value
    • url 정보표시
  • method
    • RequestMethod 를 사용하여, 요청 method를 명시한다.
    • GET/POST/PUT/DELETE 등
    • 정의하지 않으면 모든 HTTP 메서드 형식을 허용한다.

@RestController

  • @Controller + @ResponseBody
  • @ResponseBody 를 모든 메서드에 적용한다.
  • @Controller@RestController 의 차이
    • @Controller
      • API와 View를 동시에 사용하는 경우
      • API를 사용하는 메서드의 경우, @ResponseBody를 사용하여 data(json, xml)을 return한다.
      • 주로 View(화면)를 return한다.
    • @RestController
      • API만 지원하는 서비스에서 사용(Rest API & Restful API)
      • @RequestMapping 메서드가 기본적으로 @ResponseBody 의미를 가정한다.
      • 주로 data(json, xml)을 return 한다.

@Required

  • setter 메서드에 사용한다.
  • 영향을 받는 bean property 구성 시, xml 설정 파일에 반드시 property를 채워야 한다.
    • 없을 시, BeanInitializationException 예외처리됨.
<!-- Definition for student bean -->
<bean id = "student" class = "com.tutorialspoint.Student">
	<property name = "name" value = "Zara" />
	<property name = "age"  value = "11"/>
</bean>

@Autowired

  • 의존관계를 자동 설정할 때 사용하며, Type을 이용하여 의존하는 객체를 할당해준다.
    • 해당 타입의 bean 객체가 존재하지 않거나, 2개 이상 존재할 경우 예외를 발생시킨다.
    • 같은 타입의 bean 객체가 2개 이상 존재 해야할 경우, @Qualifier를 사용하여 특정 bean을 사용하도록 한다.
@Autowired
@Qualifier("person")
private Person person;

@Qualifier

  • @Autowired 로 의존관계 할당 시, 동일 타입의 bean 객체가 존재할 경우 특정 bean에 할당할 수 있게 한다.

@Resource

  • @Autowired 와 마찬가지로 bean객체를 할당하는 역할을 한다.
  • 하지만 @Autowired 는 타입(Type)으로 @Resource 는 이름(Name)으로 할당한다는 점이 다르다.
@Resource(name="person")
private Person person;

@RequestParam

  • HTTP GET 요청에 대해 매칭되는 request parameter 값이 자동으로 들어온다.
  • URL뒤에 붙는 parameter 값을 가져올 때, 사용한다.
    • http://127.0.0.1:8080/home?page=2
@GetMapping("/home")
public String home(@RequestParam("page") int page) {
	...
}

@PathVariable

  • HTTP 요청에 대해 매칭되는 request parameter 값이 자동으로 들어온다.
  • URL에서 각 구분자에 들어오는 값을 처리할 때, 사용한다.
    • http://127.0.0.1:8080/home/2
@PostMapping("/home/{page}")
@ResponseBody
public String home(@PathVariable("page") int page) {
	...
}
  • @PathVariable은 보통 REST API와 같이 데이터 호출 시, 많이 사용한다.

@RequestBody

  • HTTP POST 요청에 대해 request body에 있는 request message에서 값을 얻어와 매칭시킨다.
  • 요청이 들어온 데이터(JSON / XML)을 바로 클래스나 모델로 매핑하기 위함이다.

 

'Programming > Spring' 카테고리의 다른 글

Spring 이란 ?  (0) 2020.07.09
Comments