lombok 방식 으로 자바 의 지루 함 을 제거 합 니 다.

Lombok 은 자바 아 카 이브(JAR)파일 로 자바 코드 의 지루 함 을 없 앨 수 있 습 니 다.
우 리 는 이러한 예 를 보 았 다.하나의 표준 자바 빈.전형 적 인 자바 비 안 은 일반적으로 몇 가지 속성 을 가지 고 있다.각 속성 은 하나의 accessor 와 mutator(getter 와 setter)를 가지 고 있 습 니 다.보통 하나의toString()방법,하나의equals()방법 과 하나의hashCode()방법 이 있다.
처음에는 그 중에서 예견 할 수 있 는 군더더기 가 이미 매우 많아 보 였 다.모든 속성 이 하나의 getter 와 setter 를 가지 고 있 으 며,일반적으로 이와 같다 면,왜 상세 하 게 설명 할 필요 가 있 습 니까?
Lombok 좀 봅 시다.코드 줄 을 없 애기 위해 Lombok 은 클래스 와 자바 코드 블록 에 주석 을 사용 합 니 다.앞에서 말 한 자바 비 안 예제 에서 모든 getter,setter 및 기타 세 가지 방법 은 컴 파일 할 때 암시 되 고 포함 되 었 다.
그리고 더 좋 은 것 은 Eclipse 나 IBM 을 사용한다 면® WebSphere® Studio Application Developer(아직 사용 되 지 않 았 다 면 사용 하 는 것 이 좋 습 니 다)는 Lombok 을 자바 프로젝트 에 통합 하여 즉시 개발 결 과 를 얻 을 수 있 습 니 다.다시 말 하면 이 클립 스 컴 파일 러 는 가리 키 는 getters/setters 를 즉시 식별 할 수 있 고 다른 자바 코드 는 이 방법 을 참조 할 수 있다.
가장 직접적인 장점 은 당연히 코드 줄 의 감소 이다.이것 은 정말 좋다.또한,특정한 getter 나 setter 가 특별한 주 의 를 필요 로 한다 면,이 특정한 getter 나 setter 를 찾기 위해 열 줄 의 코드 를 여러 번 사용 할 필요 가 없습니다.코드 도 더욱 간결 해 지고 불필요 해 집 니 다.
Lombok 은 자바 bean 뿐만 아니 라 코드 의 다른 부분 도 간소화 할 수 있 습 니 다.예 를 들 어 try/catch/finally 블록 내 및 동기 화 방법 내의 불필요 한 코드 도 줄 일 수 있다.
이제 우 리 는 당신 자신의 개발 환경 에서 어떻게 상술 한 목적 을 실현 할 수 있 는 지 봅 시다.
설 치 를 하려 면 본 고 는 Eclipse 나 WebSphere Studio Application Developer 를 사용한다 고 가정 합 니 다.그렇지 않 으 면 Lombok 을 사용 할 수 있 습 니 다.하지만 개발 시 여러 가지 이점 을 누 릴 수 는 없다.그러나 컴 파일 시의 이점 을 이용 할 수 있 습 니 다.
우선,브 라 우 저 를 열 고 URL 을 가리 키 십시오http://projectlombok.org/.
본문 을 작성 할 때 이 URL 로 열 린 페이지 의 오른쪽 상단 에 큰 단어 가 나타 납 니 다.이 단 어 는'다운로드'다.이 단 어 를 누 르 고 lombok.jar 를 다운로드 하기 시작 합 니 다.이 파일 은 압축 을 풀 필요 가 없고 다른 사이트 에서 다운로드 한 파일 중 99%가 압축 을 풀 어야 합 니 다.
이 파일 을 다운로드 한 후 이 JAR 파일 을 실행 해 야 합 니 다.운영 체제 에서 프롬프트 를 열 고 lombok.jar 가 설 치 된 디 렉 터 리 에 들 어가 서 입력 하 십시오java -jar lombok.jar.
이 가설 은 사용자 의 경로 에 자바 런 타임 환경(JRE)이 있다 고 가정 합 니 다.없 으 면 추가 해 야 합 니 다.추가 방법 을 알 고 싶다 면 구체 적 인 운영 체제 에 대한 문 서 를 참고 하 십시오.
하면,만약,만약...® Windows®,그럼 이 lombok.jar 아이콘 도 더 블 클릭 할 수 있 습 니 다.마찬가지 로 그래 픽 사용자 인터페이스(GUI)에서 JAR 을 실행 할 수 있어 야 합 니 다.
어떤 식 으로 든 Lombok 설치 화면 을 볼 수 있 을 것 이다.이 화면 은 Eclipse 나 WebSphere Studio Application Developer 가 실행 할 수 있 는 파일 이 어디 에 있 는 지 질문 합 니 다.그것 의 기본 위 치 는 정확 할 수 있다.이 기본 위 치 를 바 꿔 야 할 때 가 있 습 니 다.
Install/Update 를 누 르 면 Lombok 은 Eclipse 개발 환경 에 빠르게 합 쳐 집 니 다.이 클립 스 가 실행 되 었 다 면 닫 고 다시 시작 해 야 합 니 다.
이 제 는 Eclipse 나 WebSphere Studio Application Developer 에서 Lombok 을 사용 할 수 있 습 니 다.목록 1 의 코드 를 참고 하 세 요.
목록 1.자바 빈 의 좋 은 시작
public class Lure {
	private String name;
	private int size;
	private String color;
	private String style;
}

이상 은 간단 한 자바 빈 의 전형 적 인 시작 이 었 다.여기에서 모든 속성 에 getters 와 setters 를 추가 할 수 있 습 니 다.그리고 하나equals()방법,하나toString()방법 과 하나hashCode()방법 을 추가 합 니 다.
Lombok 이 있 으 면 위 작업 을 스스로 완성 할 필요 가 없습니다.반대로 설명 을 하나 추가 하 십시오:@Data.
그래,그렇게 간단 해.리스트 2 에는@Data이 포함 되 어 있다.
목록 2.자바 빈 의 더 좋 은 시작
import lombok.Data
public @Data class Lure {
	private String name;
	private int size;
	private String color;
	private String style;
}

그러나 lombok.jar 가 구축 경로 에 있 고 lombok.Data 가 이 자바 클래스 에 가 져 올 때 만 이 코드 가 효 과 를 볼 수 있다 는 것 을 기억 하 십시오.
Eclipse 나 WebSphere Studio Application Developer 에서 이 종류의 개 요 를 보면(보통 화면 에 있 는 이 종류의 오른쪽 에 있 음)이 방법 들 이 자동 으로 추 가 됩 니 다Lure.
이 개 요 를 바로 볼 수 없다 면 Eclipse 내 Window 메뉴 를 클릭 하고 Show View 를 선택 하 십시오.팝 업 메뉴 에서 Outline 을 선택 하면 화면 오른쪽 에 나타 나 야 합 니 다.클래스 의 개 요 를 강제로 표시 하 는 단축 키 조합 은 Alt+Shift+Q 이 고,그 다음은 O 입 니 다.
실례 화Lure를 위 한 다른 종 류 를 만 들 었 다 면Lure암 시 된 방법(예 를 들 어getName()이나setSize()에 대한 접근 을 즉시 가 질 수 있 습 니 다.equals(),hashCode(),toString()에 대한 방문 도 가능 합 니 다.잘 했 어,그렇지?
Eclipse 나 WebSphere Studio Application Developer 를 사용 하지 않 는 다 면 이 코드 를 실제 컴 파일 할 때 만 인 정 받 을 수 있 는 방법 을 추가 합 니 다.따라서 Eclipse 나 WebSphere Studio Application Developer 가 없 을 때 도 Lombok 을 사용 할 수 있 지만 Lombok 의 최초 디자인 목적 은 Eclipse 나 WebSphere Studio Application Developer 와 통합 하 는 것 이다.
getter/setter 방법 을 만 들 때 Lombok 은 전통 적 인 기준 을 따른다.모든 방법 명 은get또는set로 시작 하고 속성 명 은 대문자 이다.물론 속성 이 불 리 언 이 라면 상황 은 예외다.이런 상황 에서 getter 는is가 아 닌get으로 시작한다.이것 은 자바 빈 의 표준 실천 이다.
현재 자바 비 안 이 getter 에 특별한 요 구 를 가지 고 있다 고 가정 합 니 다.목록 2 의 예 에서getStyle()색상 과 크기 의 조합 을 되 돌려 줄 수 있 습 니 다.이 경우 원 하 는 대로getStyle()방법의 코드 를 작성 할 수 있 습 니 다.Lombok 은 코드 를 검사 하고 이 속성 을 기반 으로 자신의getStyle버 전 을 만 들 지 않 습 니 다.
또 getter 방법 이 있다 고 가정 하면 공개 하고 싶 지 않 습 니 다.이 를 위해 Lombok 은 추가 인 자 를 입력 할 수 있 습 니 다.목록 3 은 맞 춤 형 수정자(modifier)를 보 여 줍 니 다.
목록 3.맞 춤 형 수정자
	private String name;
	@Getter(AccessLevel.PROTECTED) private int size;
	private String color;
	private String style;

이 사례 에서getSize()방법 은 공개 되 지 않 을 것 이다.그것 은 보 호 받 는 장식 부 호 를 가지 고 있 기 때문에 파 생 자 류 에 만 사용 할 수 있 고Lure류 자체 의 내부 에 있다.
Lombok 이 제공 하 는 다른 기본 값 을 항상 받 아들 이 고 싶 지 않 을 수도 있 습 니 다.예 를 들 어toString()방법 은 클래스 이름과 모든 속성 이름과 값 을 열거 하고 중간 에 쉼표 로 분할 합 니 다.이 목록 은 클래스 이름 옆 에 있 습 니 다.
예 를 들 어 이Lure유형 을 기록 할 때 색상 에 관심 이 없다 고 가정 합 니 다.toString()의 기본 설정 을 변경 하기 위해 서 는ToString설명 을 사용 해 야 합 니 다.
명세서 4.수정toString()
@ToString(exclude="color")
public @Data class Lure {
	private String name;
	private int size;
	private String color;
	private String style;
}

실례 화 된Lure클래스 를 출력 하면 다음 과 유사 해 보일 것 입 니 다.
Lure(name=Wishy-Washy, size=1, style=trolling)

색상 이 포함 되 지 않 았 음 을 알 았 습 니까?이것 은 이전에 Lombok 에 색상 이 포함 되 지 않 는 다 고 주석 으로 알려 주 셨 기 때 문 입 니 다.equals()hashCode()방법 을 어떻게 처리 해 야 하 는 지 수정 할 수 있 습 니 다.명세서 5 는 매우 솔직 해서 지나치게 설명 할 필요 가 없다.
명세서 5.수정hashCode()
@EqualsAndHashCode(exclude="style")
public @Data class Lure {
	private String name;
	private int size;
	private String color;
	private String style;
}

이 예 에서equals()hashCode()방법 이 생 성 되 었 을 때style속성 은 포함 되 지 않 았 다.
당신 도 try/catch/finally 블록 을 만 드 는 것 을 매우 미워 하 셨 습 니까?나 는 이렇다.다행히 Lombok 이 있 으 니 그 럴 필요 가 없습니다.Lombok 이 자바 의 군 더 더 더 기 를 없 애 는 또 다른 방식 이기 도 하 다.try/catch/finally 블록 의 번 거 로 움 을 없 애기 위해 서 는@Cleanup설명 만 사용 하 십시오.리스트 6 참조.
명세서 6.사용@Cleanup주석
public static void main(String[] args) throws IOException {
	@Cleanup InputStream in = new FileInputStream(args[0]);
	@Cleanup OutputStream out = new FileOutputStream(args[1]);
	//write file code goes here
}

상술 한 코드 는 우리 가 통상 적 으로 표준 자바 코드 에서 본 것 보다 훨씬 깔끔 하 다.호출 된 코드 에 의 해 캡 처 된 이상 을 던 져 야 합 니 다(이 예 에서IOException.
목록 6 의 이 코드 블록 은 try/catch/finally 블록 을 제거 할 뿐만 아니 라 개방 흐름 도 닫 았 습 니 다.처리 대상 이close()가 아 닌 방법 을 사용 하여 자원 을 방출 하려 면 추가 설명 이 있 는 주석 으로 이 방법 을 호출 해 야 합 니 다.예 를 들 어@Cleanup("relinquish").
Lombok 은 동기 화 방법 에 필요 한 코드 의 번 거 로 움 도 줄 일 수 있다.자 연 스 럽 습 니 다.이것 은@Synchronized방법 으로 이 루어 진 것 입 니 다.
명세서 7.사용@Synchronized주석
@Synchronized
private int foo() {
	//some magic done here
	return 1;
}

이 예 에서 Lombok 은$lock라 는 인 스 턴 스 대상 을 자동 으로 만 들 고 이 대상 에 대한 동기 화 방법foo()을 만 듭 니 다.@Synchronized주석 을 사용 하 는 이 방법 이 정적 이면 Lombok 은$LOCK이라는 클래스 대상 을 만 들 고 이 대상 을 대상 으로 동기 화 합 니 다.
추가 매개 변 수 를 통 해 명시 적 잠 금 을 할 대상 을 지정 할 수 있 습 니 다.예 를 들 어@Synchronized("myObject")대상 myObject을 대상 으로 동기 화 하 는 방법 이다.이런 상황 에서 그것 을 명시 적 으로 정의 해 야 한다.
Lombok 을 사용 하면 모든 응용 프로그램 개발 자 들 이 최선 을 다 해 실현 할 수 있 는 목 표를 실현 할 수 있 습 니 다.번 거 로 움 을 없 애 는 것 입 니 다.
코드 를 더 잘 읽 을 수 있 습 니 다.자바 비 안에서'특수'(즉 전형 적 인 기준 을 따 르 지 않 음)를 찾 는 대량의 속성 을 가 진 getter 와 setter 방법 은 더욱 간편 할 것 이다.이것 은 이러한 특수 한 getter/setter 방법 만 실제 인 코딩 되 어야 하기 때문이다.
Lombok 은 코드 의 깔끔 함,효율 성 향상,불필요 한 감소 에 도움 이 된다.왜 당신 의 환경 내 에서 시도 해 보지 않 습 니까?

좋은 웹페이지 즐겨찾기