구멍가게 IT 공부방
Spring Annotation 본문
@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 한다.
- @Controller
@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