spring @Annotation

sun·2024년 5월 1일

Spring

목록 보기
14/14

@Annotation

@Controller

Spring의 Controller를 의미한다. Spring MVC에서 Controller클래스에 쓰인다.

@RestController

Spring에서 Controller 중 View로 응답하지 않는, Controller를 의미한다.

method의 반환 결과를 JSON 형태로 반환한다.

이 Annotation이 적혀있는 Controller의 method는 HttpResponse로 바로 응답이 가능하다.
@ResponseBody 역할을 자동적으로 해주는 Annotation이다.
@Controller + @ResponseBody를 사용하면 @ResponseBody를 모든 메소드에서 적용한다.

@Controller 와 @RestController 의 차이

@Controller

API와 view를 동시에 사용하는 경우에 사용한다.
대신 API 서비스로 사용하는 경우는 @ResponseBody를 사용하여 객체를 반환한다.
view(화면) return이 주목적이다.

@RestController

view가 필요없는 API만 지원하는 서비스에서 사용한다.
Spring 4.0.1부터 제공
@RequestMapping 메서드가 기본적으로 @ResponseBody 의미를 가정한다.
data(json, xml 등) return이 주목적이다.

즉, @RestController = @Controller + @ResponseBody 이다.

@Service

Service Class에서 쓰인다.
비즈니스 로직을 수행하는 Class라는 것을 나타내는 용도이다.

@Repository

DAO class에서 쓰인다.
DataBase에 접근하는 method를 가지고 있는 Class에서 쓰인다.

@EnableAutoConfiguration

Spring Application Context를 만들 때 자동으로 설정하는 기능을 켠다.

classpath의 내용에 기반해서 자동으로 생성해준다.

만약 tomcat-embed-core.jar가 존재하면 톰캣 서버가 setting된다.

@Configuration

@Configuration을 클래스에 적용하고 @Bean을 해당 Class의 method에 적용하면 @Autowired로 Bean을 부를 수 있다.

@SpringBootApplication

@Configuration, @EnableAutoConfiguration, ComponentScan 3가지를 하나의 애노테이션으로 합친 것이다.

@RequestMapping

요청 URL을 어떤 method가 처리할지 mapping 해주는 Annotation이다.
Controller나 Controller의 method에 적용한다.
요청을 받는 형식인 GET, POST, PATCH, PUT, DELETE 를 정의하기도 한다.

요청 받는 형식을 정의하지 않는다면, 자동적으로 GET으로 설정된다.

@RequestMapping에 대한 매핑 정보는 Spring에서 제공하는 HandlerMapping Class가 가지고 있다.

@CookoeValue

쿠키 값을 parameter로 전달 받을 수 있는 방법이다.
해당 쿠키가 존재하지 않으면 500 에러를 발생시킨다.
속성으로 required가 있는데 default는 true.
false를 적용하면 해당 쿠키 값이 없을 때 null로 받고 에러를 발생 시키지 않는다.

@CrossOrigin

CORS 보안상의 문제로 브라우저에서 리소스를 현재 origin에서 다른 곳으로의 AJAX요청을 방지하는 것이다.

@RequestMapping이 있는 곳에 사용하면 해당 요청은 타도메인에서 온 ajax요청을 처리해준다.

//기본 도메인이 http://jeong-pro.tistory.com 인 곳에서 온 ajax요청만 받아주겠다.
@CrossOrigin(origins = "http://jeong-pro.tistory.com", maxAge = 3600)

@ModelAttribute

참고
https://velog.io/@gillog/Spring-Annotation-%EC%A0%95%EB%A6%AC

0개의 댓글