Annotation이란 사전상 주석의 의미이지만, Java에서는 주석 이상의 특별한 기능을 가지고 잇다. Java 코드에 추가하여 사용할 수 있는 메타데이터의 일종으로, 스프링 프레임워크에서 해당 클래스의 역할을 정의하거나, Bean을 주입하는 등 여러가지 역할을 할 수 있다.
클래스를 Spring의 Bean으로 등록할 때 사용
: @Controller, @Service, @Repository
@Component, @Service, @Repository, @Controller, @Configuration이 붙은 클래스 Bean들을 찾아서 Context에 Bean 등록한다. @SpringBootApplication은 @ComponentScan을 포함하고 있다.
개발자가 제어가 불가능한 외부 라이브러리와 같은 것들을 Bean으로 만들 때 사용
요청으로 들어온 요청의 URL과 value 값이 일치하면 해당 클래스나 메소드가 실행된다. Class 단위에 사용하면 하위 메소드 공통으로 적용 가능하며, 메소드에 적용하면 해당 메소드만 적용할 수 있다.
URL에 전달되는 쿼리 파라미터를 메소드의 인자와 매칭시켜, 파라미터를 받아서 처리할 수 있다. (쿼리 파라미터, 쿼리 스트링이 동작하는 방식에서 사용 - 정렬이나 필터링이 필요할 때)
@RequestMapping(value = "/user", method=RequestMethod.GET)
public ModelAndView getUerByName(@RequestParam("name") String name)
{
...
}
@RequestMapping 값의 {템플릿 변수}와 매핑시켜, 동일한 이름을 같는 파라미터에 매핑시킨다. (경로를 변수로서 사용한다. - 리소스를 식별할 때)
@RequestMapping(value = "/user/{name}", method=RequestMethod.GET)
public ModelAndView getUerByName(@PathVariable("name") String name)
{
...
}
요청 Body에 전달되는 데이터를 메서드의 인자와 매칭시켜, 데이터를 받아서 처리할 수 있다.
클라이언트가 전송하는 HTTP parameter, Body 내용을 Setter 함수를 통해 1대1로 매칭시켜 객체에 데이터를 바인딩한다.
메서드에서 리턴하는 값이 View로 출력하지 않고 HTTP Response Body에 직접 쓰여진다.
@Controller + @ResponseBody 결합 형태의 어노테이션으로, Json/Xml 형태로 객체 데이터를 반환한다.
필드, 생성자, setter 메서드에 사용되어 필요한 의존 객체의 "타입"에 해당하는 빈을 찾아 주입한다.
스프링이 제공하는 트랜잭션 AOP 적용
스프링 AOP와 같이 스프링이 제공하는 기능을 적용하기 위해서는 스프링 컨테이너가 필요하다. @SpringBootTest를 통해 테스트시 스프링 부트를 통해 스프링 컨테이너를 생성한다. 테스트에서 @Autowired를 통해 스프링 컨테이너가 관리하는 빈을 사용할 수 있다.
테스트 안에서 내부 설정 클래스를 만들어서 이 애너테이션을 붙이면, 스트링 부트가 자동으로 만들어주는 빈들에 추가로 필요한 스프링 빈을 등록하고 테스트를 수행할 수 있다.
코드를 크게 줄여주어 가독성을 크게 높일 수 있는 라이브러리이다.
클래스의 모든 필드의 setter method를 생성해준다.
클래스의 모든 필드의 getter method를 생성해준다.
클래스의 모든 필드 값을 파라미터로 받는 생성자를 생성해준다.
클래스의 기본 생성자를 자동으로 생성해준다.
@Getter, @Setter, @EqualsAndHashCode, @AllArgsConstructor을 포한한 Lombok에서 제공하는 필드와 관련된 코드를 생성한다. - 모든 기능을 허용하는 것은 문제에 노출될 가능성이 높아 사용하지 않는 것이 좋다.
http://melonicedlatte.com/2021/07/18/182600.html
https://2ham-s.tistory.com/290