일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- jsp
- mybatis
- poi
- poi엑셀
- 자바파일업로드
- 퍼블리싱
- 자바타입
- 자바
- db
- CSS3
- 파일업로드
- select
- 자바스크립트
- pagenation
- crud
- PAGING
- Java
- ORDERBY
- JSTL
- mysql
- MariaDB
- 페이징
- spring
- 스프링파일업로드
- jquery
- 게시판구현
- html5
- SQL
- 스프링
- insert
- Today
- Total
째의 개발 기록방
[Java/Spring] 자주 사용되는 어노테이션(Annotation)과 Lombok 본문
1. 어노테이션(@, Annotation)이란?
Annotation은 JEE5부터 새롭게 추가된 문법요소이다. 사전적으로는 "주석"이라는 의미를 가지고 있으며, 의미대로
자바 코드에 주석처럼 달아 특수한 의미를 부여해준다. 이 특별한 의미는 컴파일 타임 또는 런타임에 해석될 수 있다.
아래와 같이 클래스 내부 또는 클래스 바로 위에 '@'와 함께 시작하는 것이 어노테이션이다.
@Component
개발자가 생성한 Class를 Spring의 Bean으로 등록할 때 사용하는 Annotation입니다. Spring은 해당 Annotation을 보고 Spring의 Bean으로 등록한다.
@Component(value="myman")
public class Man {
public Man() {
System.out.println("hi");
}
}
@ComponentScan
Spring Framework는 @Component, @Service, @Repository, @Controller, @Configuration 중 1개라도 등록된 클래스를 찾으면, Context에 bean으로 등록합니다. @ComponentScan Annotation이 있는 클래스의 하위 Bean을 등록 될 클래스들을 스캔하여 Bean으로 등록해준다.
@RequestMapping
@RequestMapping에 대한 모든 매핑 정보는 Spring에서 제공하는 HandlerMapping Class가 가지고 있다.
1) Class Level Mapping
모든 메서드에 적용되는 경우
“/home”로 들어오는 모든 요청에 대한 처리를 해당 클래스에서 한다는 것을 의미한다.
2) Handler Level Mapping
요청 url에 대해 해당 메서드에서 처리해야 되는 경우
“/home/employees” POST 요청에 대한 처리를 addEmployee()에서 한다는 것을 의미한다.
value: 해당 url로 요청이 들어오면 이 메서드가 수행된다.
method: 요청 method를 명시한다. 없으면 모든 http method 형식에 대해 수행된다.
@Autowired
org.springframework.beans.factory.annotation.Autowired
Type에 따라 알아서 Bean을 주입한다.
필드, 생성자, 입력 파라미터가 여러 개인 메소드(@Qualifier는 메소드의 파라미터)에 적용 가능
Type을 먼저 확인한 후 못 찾으면 Name에 따라 주입한다.
Name으로 강제하는 방법: @Qualifier을 같이 명시
예시
TIP) Bean을 주입받는 방식 (3가지)
@Autowired
setter
생성자 (@AllArgsConstructor 사용) -> 권장방식
@Resource
javax.annotation.Resource
표준 자바(JSR-250 표준) Annotation으로, Spring Framework 2.5.* 부터 지원 가능한 Annotation이다.
Annotation 사용으로 인해 특정 Framework에 종속적인 어플리케이션을 구성하지 않기 위해서는 @Resource를 사용할 것을 권장한다.
@Resource를 사용하기 위해서는 class path 내에 jsr250-api.jar 파일을 추가해야 한다.
필드, 입력 파라미터가 한 개인 bean property setter method에 적용 가능
[Parameter를 받는 방법]
@RequestParam
HTTP GET 요청에 대해 매칭되는 request parameter 값이 자동으로 들어간다.
url 뒤에 붙는 parameter 값을 가져올 때 사용한다.
Ex) ` http://localhost:8080/home?index=1&page=2`
@GetMapping("/home")
public String show(@RequestParam("page") int pageNum {
}
위의 경우 GET /home?index=1&page=2와 같이 uri가 전달될 때 page parameter를 받아온다.
@RequestParam 어노테이션의 괄호 안의 문자열이 전달 인자 이름(실제 값을 표시)이다.
@RequestBody
반드시 HTTP POST 요청에 대해서만 처리한다.
HTTP POST 요청에 대해 request body에 있는 request message에서 값을 얻어와 매칭한다.
RequestData를 바로 Model이나 클래스로 매핑한다.
이를테면 JSON 이나 XML같은 데이터를 적절한 messageConverter로 읽을 때 사용하거나 POJO 형태의 데이터 전체로 받는 경우에 사용한다.
@ModelAttribute
@RequestParam과 비슷하다.
form 값
Lombok
- 자바 개발시 자주 사용하는 getter/setter, toString(), 생성자 등을 자동으로 생성해주는 라이브러리.
- @Data, @Getter, @Setter, @ToString 등의 어노테이션 방식을 이용한다.
- lombok을 사용 시
import java.util.Date;
import org.apache.ibatis.type.Alias;
import lombok.Data;
@Alias("reportCommentsVO")
@Data
public class ReportCommentsVO {
private Integer comtId;
private Integer reportId;
private String comtContent;
private String regId;
private String regIdStr;
private Date regDt;
private String regDtStr;
private String modId;
private String modIdStr;
private Date modDt;
private String modDtStr;
}
- lombok을 사용하지 않을때
import java.util.Date;
import org.apache.ibatis.type.Alias;
import lombok.Data;
@Alias("reportCommentsVO")
public class ReportCommentsVO {
private Integer comtId;
private Integer reportId;
private String comtContent;
private String regId;
private String regIdStr;
private Date regDt;
private String regDtStr;
private String modId;
private String modIdStr;
private Date modDt;
private String modDtStr;
public Integer getComtId() {
return comtId;
}
public void setComtId(Integer comtId) {
this.comtId = comtId;
}
public Integer getReportId() {
return reportId;
}
public void setReportId(Integer reportId) {
this.reportId = reportId;
}
public String getComtContent() {
return comtContent;
}
public void setComtContent(String comtContent) {
this.comtContent = comtContent;
}
public String getRegId() {
return regId;
}
public void setRegId(String regId) {
this.regId = regId;
}
public String getRegIdStr() {
return regIdStr;
}
public void setRegIdStr(String regIdStr) {
this.regIdStr = regIdStr;
}
public Date getRegDt() {
return regDt;
}
public void setRegDt(Date regDt) {
this.regDt = regDt;
}
public String getRegDtStr() {
return regDtStr;
}
public void setRegDtStr(String regDtStr) {
this.regDtStr = regDtStr;
}
public String getModId() {
return modId;
}
public void setModId(String modId) {
this.modId = modId;
}
public String getModIdStr() {
return modIdStr;
}
public void setModIdStr(String modIdStr) {
this.modIdStr = modIdStr;
}
public Date getModDt() {
return modDt;
}
public void setModDt(Date modDt) {
this.modDt = modDt;
}
public String getModDtStr() {
return modDtStr;
}
public void setModDtStr(String modDtStr) {
this.modDtStr = modDtStr;
}
}
출처: https://toma0912.tistory.com/9 [토마의 개발노트]
'Back End > Java, Spring' 카테고리의 다른 글
[Java/Spring] 업캐스팅과 다운캐스팅 (0) | 2022.05.25 |
---|---|
[Java/Spring] 파일업로드(File_Upload) (0) | 2021.12.11 |
[Java/Spring] 파일다운로드(File_download) (0) | 2021.12.07 |
[Java/Spring] Poi 엑셀 파일 업로드(Excel _file_Upload) (0) | 2021.11.22 |
[Java/Spring] Poi 엑셀 파일 다운로드(Excel _file_Download) (0) | 2021.11.18 |