Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Elk
- AWS
- mybatis
- mongodb
- libuv
- 데이터통신
- nodejs
- network
- spring
- reactor
- r
- redis
- git
- Java
- github
- html
- NoSQL
- 네트워크
- reactive
- javascript
- HTTP
- Static
- ajax
- VCS
- Heap
- socket
- effective
- Linux
- cache
- Lombok
Archives
- Today
- Total
빨간색코딩
lombok (롬복의 특징, annotations) 본문
참조문서 : https://projectlombok.org/
1. lombok 을 왜 쓰는가?
모델 Class (VO, DTO, Entity) 를 만들때, 제일 귀찮은 것이 생성자, 접근자, 설정자, toString() 등이라고 한다. 나는 별로 안 귀찮지만...ㅋㅋㅋ 그래도 lombok을 사용하면 @Getter, @Setter 같은 어노테이션만 붙이면 자동으로 해준다하니 알아보고 좋다면 써보자
기존 방식의 문제점
- 멤버변수를 제어하기위해 모델객체마다 반복적으로 메소드들을 생성해야 한다.
- IDE에서 generate 를 이용해서 편하게 생성할 수 있지만, 변수명이 바뀌면 다시 만들어야한다.
lombok의 특징
- 생성자, 접근자, 설정자, toString() 자동생성 라이브러리이므로 위와 같은 번거로움이 없다.
- 이외에도 다양한 기능들이 추가로 있다.
2. maven 에서 사용하기
pom.xml 에 추가, 아래는 현재 기준 최신 버전이다.
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
<scope>provided</scope>
</dependency>
3. 주로 사용하는 어노테이션
3-1. 접근자와 설정자 @Getter, @Setter
접근자와 설정자를 자동 생성해준다. 멤버변수 위에 선언해주면 된다. 클래스 위에 선언하면 전체 적용
3-2. 생성자
클래스 위에 쓴다.
- @AllArgsConstructor : 모든 변수로 생성자 생성
- @RequiredArgsConstructor : final 키워드나 @NonNull 된 멤버변수로만 생성자 생성
- @NoArgsConstructor : 기본 생성자 생성
3-3. toString()
@ToString 를 사용한다. @ToString(exclude = "password")
처럼 특정 필드를 제외시킬 수도 있다.
3-4. @EqualsAndHashCode
객체 비교 등의 용도로 사용되는 equals(), hashCode() 메소드의 코드를 생성해준다.
3-5. @Data
위에 있는 @Getter, @Setter, @RequiredArgsConstructor, @EqualsAndHashCode, @ToString 같은 걸 한번에 해준다.
3-6. 기타
- @NonNull : 변수 위에 사용한다, runtime시에 Null Check을 하여 NullPointerException이 발생하도록 한다.
'Spring' 카테고리의 다른 글
Controller에서 다양한 타입으로 Request 요청받기 (PathVariable, RequestParam, ModelAttribute, RequestBody) (0) | 2018.04.01 |
---|---|
RestTemplate (정의, 특징, URLConnection, HttpClient, 동작원리, 사용법, connection pool 적용) (4) | 2018.02.26 |
JSTL (종류, 사용법, core, fuctions) (0) | 2018.02.25 |
apache tiles (jsp include와 차이, Composite View 패턴, spring과 연동 설정, 예제) (0) | 2018.01.09 |
freemarker (개념, jsp와 차이, 문법, spring과 연동 설정, 예제) (2) | 2018.01.09 |
Comments