어노테이션 정리
@Controller - 요청, 응답 제어 명시 + Bean으로 등록. @RequestMapping("공통 요청 주소 매핑") @GetMapping("주소") : GET(조회) 방식 요청 매핑. @PostMapping("주소") : POST(삽입) 방식 요청 매핑. @PutMapping("주소") : PUT(수정) 방식 요청 매핑. ( form, a 태그 요청 불가 ) @DeleteMapping("주소") : DELETE(삭제) 방식 요청 매핑. ( form, a 태그 요청 불가 ) @Slf4j - 로그를 사용하고자 할 때 사용함. @Component - 객체를 나타내는 일반적인 타입. bean과 동일한 역할. @Repository - 퍼시스턴스(persistence) 레이어, 영속성을 가지는 클래스(DB, 파일) @Mapper를 이용하면 @Mapper가 적용된 인터페이스를 DAO로 인식해 @Repository를 잘 이용하지 않음. @Service - 서비스 레이어, 비즈니스 로직을 가진 클래스. @Autowired - 정밀한 의존 관계 주입이 필요한 경우 유용. 필드 변수, Setter 메서드, 생성자, 일반 메서드에 적용 가능. property, constructor-arg 태그와 동일한 역할. @Qualifier - @Autowired와 함께 쓰이고 한 프로젝트 내 @Autowired로 의존성을 주입하고자 하는 객체가 여러 개 일경우 @Qualifier("name"을 통해 원하는 객체를 지정해 주입할 수 있음. @SpringBootApplication - Spring Boot Application에 필요한 필수 어노테이션을 모아둠. Spring Boot 프로젝트로 만든 어플리케이션의 실행을 담당하는 클래스. 최소 설정으로 간단하고 빠르게 실행할 수 있다. @SpringBootConfiguration - Spring 설정 파일을 나타내는 어노테이션. @Configuration(자바 기반 설정 파일임을 나타냄)의 자식 어노테이션이다. @ComponentScan - 지정된 패키지 이하 Bean 등록을 위한 어노테이션을 인식함. @SpringBootApplication이 붙은 클래스가 위치하고 있는 패키지 이하가 @ComponentScan 지정 패키지가 된다. (최상위 패키지 바로 아래 클래스가 위치 해야한다.) @EnableAutoConfiguration - 자동 설정을 위해 사용되는 어노테이션. 등록된 Bean과 조건에 따라 자동으로 설정 적용. spring-boot-autocinfigure 라이브러리. -> spring.factories 파일에 자동 설정을 위한 클래스가 등록되있음. @RequestParam("key") 자료형 매개변수명 - request 객체를 이용한 파라미터 전달 어노테이션. 매개변수 앞에 어노테이션을 작성하면 매개변수에 값이 주입 된다. 주입되는 데이터는 매개변수의 타입에 맞게 형 변환 및 파싱이 자동으로 진행된다. @RequestParam(value="key", required="true or false", defaultValue="?") value -> 전달 받은 input 태그의 name 속성값 (파라미터 key) required -> name 속성값 파라미터 필수 여부 지정( 기본값은 true ) required="true"인 파라미터가 존재하지 않는다면 400 Bad Error 발생함. defaultValue -> 파라미터 중 일치하는 name 속성값이 없을 경우 대입할 값을 지정함. required="false"인 경우에 사용한다. @RequestParam 파라미터가 여러 개일 경우 예시) 배열, List, Map일 때 name 속성값이 중복되면 덮어쓰기가 되며, 만약 배열,List 형태일 경우 처음에 체크한 값이 넘어온다. (input 태그가 checkbox인 경우) @RequestParam Map(String, Object) -> 제출된 모든 파라미터가 Map에 저장된다. * 참고 input 태그 안에 값을 작성하지 않으면 빈 문자열로 파라미터로 넘어온다. 이 경우 파라미터가 없는게 아닌, required=true에 위배되지 않기 때문에 오류가 발생하지 않음. @ModelAttribute DTO, VO와 같이 사용하는 어노테이션이다. 전달 받은 파라미터의 name 속성값이 같이 사용되는 DTO의 필드명과 같다면 자동으로 Setter를 호출해 필드에 값을 세팅해준다. 단, DTO에 기본 생성자와 Setter가 필수로 존재해야한다. 이 어노테이션을 통해 값이 필드에 세팅된 객체를 "커맨드 객체"라고 부른다. @Transactional - 트랜잭션 처리 수행 지시 어노테이션. 정상 코드 수행 시 COMMIT 기본값으로 코드 수행 중 RuntimeException 발생 시 rollback rollbackFor 속성 : 어떤 예외가 발생했을 때 rollback 할지 지정하는 속성이다. ex) @Transactional(rollbackFor=Exception.class) @Mapper - MyBatis에서 제공하는 어노테이션. 해당 어노테이션이 적용된 인터페이스를 DAO로 인식해 SQL 매핑 처리를 해준다. namespace에 해당 인터페이스가 작성된 mapper.xml 파일과 연결되어 SQL 호출/수행/결과 반환이 가능하다. MyBatis에서 제공하는 Mapper 상속 객체가 Bean으로 등록 된다. @ResponseBody - 컨트롤러 메서드의 반환 값을 HTTP 응답 본문에 직접 바인딩하는 역할임을 명시한다. 컨트롤러 메서드의 반환 값을 비동기 요청을 보냈던 HTML/JS 파일에 값을 돌려보낼 것임을 명시함. forward나 redirect 갱신X @RequestBody - 비동기 요청(ajax)시 전달되는 데이터 중 body 부분에 포함된 데이터를 알맞은 Java 객체 타입으로 바인딩하는 어노테이션.