자바 객체를 HTTP 요청의 body 내용으로 매핑하는 역할.
@Controller와는 다르게 @RestController 리턴값에 자동으로 @Responsebody가 붙게되어 HTTP 응답 데이터(body)에 자바 객체가 매핑되어 전달된다.
@GetMapping("/login2")
public String login2() {
//Restcontroller에서는 String으로 출력
return "login";
}
https://tecoble.techcourse.co.kr/post/2021-05-11-requestbody-modelattribute/
@ModelAttribute는 파라미터 값으로 DTO객체에 바인딩을 하는 방식이기 때문에 바인딩하려는 DTO객체에 Setter메소드가 반드시 있어야 하고,
@RequestBody는 요청 본문의 body에 json이나 xml값으로 요청을 하여 HttpMessageConveter를 반드시 거쳐 DTO객체에 맞는 타입으로 바꿔서 바인딩을 시켜준다.
HttpServletRequest의 getParameter() 메서드를 이용하여 파라미터 값을 가져올 수 있다.
이때 parameter로 보낸 변수명과 getParameter("변수명") 에 들어갈 변수명이 일치해야한다.
개발자가 직접 개발한 클래스를 Bean으로 등록하고자 하는 경우 @Component 어노테이션을 활용
해당 클래스에서 참조할 properties 파일의 위치를 지정한다.
해당 어노테이션은 인자에 prefix 속성을 지정할 수 있다.
prefix : 접두사
@PropertySource에 지정된 파일(application.properties)에서 prefix에 해당하는 spring.datasource.hikari로 시작하는 설정을 모두 읽어 들여 해당 메서드에 매핑(바인딩)한다.
마이바티스와 스프링의 연동 모듈로 사용된다.
마이바티스 XML Mapper, 설정 파일 위치 등을 지정하고, SqlSessionFactoryBean 자체가 아닌, getObject 메서드가 리턴하는 SqlSessionFactory를 생성한다.
@Mapper 어노테이션으로 xml 과 연결을 할 수 있도록 해주고, @Repository 어노테이션으로 Service나 Controller 에서 DI 될 수 있도록 한다.
프로젝트가 커지다 보면 공통으로 사용하는 값을 별도로 관리 하게 되는데, 이 값들을 쉽게 가져다 쓰기 위해 사용.
@Value("#{WORK.LOCATION}")
String JOB;
위 코드의 의미는 프로퍼티 파일에서 WORK의 LOCATION 값을 읽어와 해당 클래스 안에서 JOB 라는 String 타입의 변수로 사용 하겠다는 의미. 위와 같이 @Value 에서 사용할 값은 root-context.xml 파일에서 정의 또는 application.properties 파일에서 정의.
@Value("${cookie.secure}")
private boolean cookieSecure;
이 어노테이션은 초기화 되지않은 final 필드나, @NonNull 이 붙은 필드에 대해 생성자를 생성해준다. 주로 의존성 주입(Dependency Injection) 편의성을 위해서 사용되곤 한다.
모든 필드를 가진 생성자 자동 생성.
파라미터가 없는 기본 생성자를 생성.
초기화 작업을 할 메소드에 적용되며, 이 어노테이션이 적용된 초기화 메소드는 WAS가 띄워질 때 실행된다.
@Getter @Setter @EqualsAndHashCode @AllArgsConstructor을 포함한 Lombok에서 제공하는 필드와 관련된 모든 코드를 생성한다. 실제로 사용하지 않는것이 좋다. 전체적인 모든 기능 허용으로 위험 존재.
본 어노테이션을 붙인 메서드는 해당 테스트 클래스를 초기화할 때 딱 한번 수행되는 메서드다.
메서드 시그니쳐는 static 으로 선언해야한다.
본 어노테이션을 붙인 메서드는 테스트 메서드 실행 이전에 수행된다.
@MappedSuperclass를 통해 상속 받은 경우나 @Embedded를 통해 다른 객체를 필드에 선언한 경우 해당 엔티티에서는 다른 컬럼명을 사용하고 싶을 때가 있다. 이러한 경우에 사용할 수 있는 어노테이션이다.