@Data :
Lombok에서 가장 자주 사용되는 어노테이션
getter/setter, equals(), toString() 등의 메서드를 자동 생성
@ToString, @EqualsAndHashCode, @Getter/Setter, @RequiredArgsConstructor를 모두 결합한 형태로 한 번에 자주 사용되는 모든 메서드들을 생성할 수 있다는 장점이 있다(세부적인 설정이 필요없는 경우 @Data를 주로 이용한다)
@Controller :
method 속성을 추가할 수 있음, GET, POST, PUT, DELETE 방식이 있으며 @GetMethod이 경우 GET 방식에만 사용할 수 있다(기능에 대한 제한이 많은 편)
파라미터를 자동으로 수집하는데, 이 경우 DTO에 선언된 타입을 따라 자동으로 변환해준다
@Controller가 붙어있는 클래스는 @Data 어노테이션이 붙어있는 클래스의 파라미터를 자동으로 수집한다
@Component :
스프링에게 해당 클래스가 스프링에서 관리해야 하는 대상(=객체)임을 표시함
@Setter :
컴파일 시 자동으로 set—()을 생성
@ComponentScan :
XML로 설정하는 대신 사용, @Component가 존재하는 클래스들을 객체로 생성해서 빈으로 관리함
지정한 패키지를 스캔, 즉 @Component가 있는 클래스를 스프링이 읽어주도록 @ComponentScan을 통해 지정하는 것
@RunWith :
테스트 시 필요한 클래스를 지정(스프링은 SpringJUnit4ClassRunner 클래스가 대상이 된다)
스프링을 실행하는 역할을 할 것임을 표시하는 어노테이션
@ContextConfiguration :
지정된 클래스나 문자열을 이용해서 필요한 객체들을 스프링 내에 객체(스프링의 빈Bean)로 등록
@Log4j :
Lombok을 이용해서 로그를 기록하는 Logger를 변수로 생성
즉, 로그 객체를 생성
Lombok :
컴파일 시 흔하게 코드를 작성하는 기능들을 완성해주는 라이브러리
@Autowired :
해당 인스턴스 변수가 스프링으로부터 자동으로 주입해 달라는 표시=
스프링 내부에서 자신이 특정한 객체에 의존적이므로 자신에게 해당 타입의 빈을 주입해주라는 표시
개발자가 직접 객체들과의 관계를 관리하지 않고 자동으로 관리되도록 함
@Test :
JUnit에서 테스트 대상을 표시하는 어노테이션
junit에서 해당 메서드가 jUnit 상에서 단위 테스트 대상인지 알려줌
assertNotNull() :
변수가 null이 아니어야만 테스트가 성공한다는 것을 의미
@ContextConfiguration :
스프링이 실행되면서 어떤 설정 정보를 읽어 들여야 하는지를 명시
방법1 -
locations을 이용하여 문자열의 배열로 XML 설정 파일을 명시
방법2-
classes 속성으로 @Configuration이 적용된 클래스를 지정
@AllArgsConstructor :
인스턴스 변수로 선언된 모든 것을 파라미터로 받는 생성자를 작성함
@RequiredArgsConstructor :
@NonNull이나 final이 붙은 인스턴스 변수에 대한 생성자를 만들어냄
@RequestParam :
파라미터로 사용된 변수의 이름과 전달되는 파라미터의 이름이 다른 경우에 사용
동일한 이름의 파라미터가 여러 개 전달되는 경우 ArrayList<> 혹은 배열을 사용하여 처리한다
//ArrayList<>를 사용하는 경우
@GetMapping("/ids01")
public String ids01(@RequestParam("ids") ArrayList<String> ids) {
...
return "ids01";
}
->/ids01?ids=111&ids=222&ids=333
//배열을 사용하는 경우
@GetMapping("/ids02")
public String ids02(@RequestParam("ids") String[] ids) {
...
return "ids02";
}
->/ids02?ids=111&ids=222&ids=333
@InitBinder :
Controller에서 파라미터를 바인딩binding(수집)할 때, 2013-01-25와 같이 문자열로 전달되는 날짜 데이터를 java.util.Date 타입으로 변환하여 처리한다
@DateTimeFormat :
파라미터로 사용되는 인스턴스 변수에 바로 적용이 가능, 단
"yyyy/MM/dd" 형식을 지켜서 전달해야한다(이때 @InitBinder은 필요하지 않다)
@ModelAttribute :
강제로 전달받은 파라미터를 Model에 담아서 전달하도록 할 때 필요한 어노테이션
즉, DTO에 없는 파라미터를 url로 전달하고자 할 때 @ModelAttribute("파라미터")와 같이 값을 지정하여 사용한다
@ResponseBody :
메서드의 리턴 타입을 VO나 DTO 타입 등 복합적인 데이터가 들어간 객체 타입으로 지정할 때, JSON 데이터를 만들어 내는 용도로 사용함(pom.xml에 jackson-databinde 라이브러리를 추가해야함)
@ControllerAdvice :
해당 객체가 스프링의 컨트롤러에서 발생하는 예외를 처리하는 존재임을 명시
공통적인 예외사항을 처리할 때 @ExceptionHandler와 함께 사용
@ExceptionHandler :
해당 메서드가 () 들어가는 예외 타입을 처리한다는 것을 의미, 속성으로 Exception 클래스 타입을 지정할 수 있으며 Exception.class를 지정하면 해당 메서드만을 이용해서 예외에 대한 처리가 진행됨
@ResponseStatus :
Network의 State Code를 변경해준다
@EnableWebMvc :
@Bean, Config 등을 알아서 세팅해준다
WebMvcConfigurer :
스프링 MVC와 관련된 설정을 메서드로 오버라이드 하는 형태를 이용할 때 사용한다
@SelectKey :
주로 PK 값을 미리(before) SQL을 통해서 처리해 두고 특정한 이름으로 결과를 보관하는 방식
<selectKey keyProperty="PK" order="BEFORE" resultType="파라미터 타입">
쿼리문
</selectKey>
@Service :
계층 구조상 주로 비즈니스 영역을 담당하는 객체임을 표시하기 위해 사용, 작성된 어노테이션은 패키지를 읽어 들이는 동안 처리됨
@RequestMapping :
어노테이션 뒤로 ("/주소/*")
를 지정하면 해당 주소로 시작되는 모든 처리를 @RequestMapping가 붙어있는 클래스가 하도록 지정
@WebAppConfiguration :
WebApplicationContext라는 존재를 이용하기 위한 어노테이션
@Before :
@Before 어노테이션이 적용된 메서드는 모든 테스트 전에 매번 실행됨
addFlashAttrivute() :
데이터를 단 한 번만 사용할 수 있게 보관함, 즉, 일회성으로만 데이터를 사용할 수 있음
@Bean :
XML 설정에서 <bean>
과 동일한 역할을 한다. @Bean이 선언된 메서드의 실행 결과로 반환된 객체는 스프링의 객체(Bean)으로 등록된다.
『코드로 배우는 스프링 웹 프로젝트 개정판』 - 구멍가게 코딩단 지음
정말 좋은 정보 감사합니다!