2016년 9월 7일 수요일

[자바학원,스프링학원,IT학원추천★탑크리에이트]롬복(Lombok) 설치및소개


롬복(lombok)소개

n  자바개발시 모델객체를 생성할 때 setter/getter/toString/hashCode/equals 메소드를 만드는데 이럴 경우 클래스 파일의 소스가 길어지고 복잡해지는데이를 해결하기 위해 롬복(Lombok)을 사용한다.
n   클래스 안에 있는 필드에 대해 Getter, Setter의 생성이나,  toString(), equals(), hashCode() 메서드생성자를 자동으로 생성 해준다.
n   설치
ü   http://projectlombok.org/download.html 에서 jar 파일을 다운로드 후 실행(더블클릭해서 실행 안되면 javaw jar lombok.jar로 실행하자)

ü  maven의 설정 파일에 의존성 추가
    <dependency>groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.6</version></dependency>

ü  Gradle의 설정 파일에 의존성 추가
        Compile('org.projectlombok:lombok:1.16.6')

스프링 부트를 사용한다면 프로젝트 생성시 두번째 화면에서 Core -> Lombok을 선택하면 자동으로 라이브러리가 추가된다.

n  어노테이션
@Getter : Getter 메소드를 생성해 준다.
@Setter : Setter 메소드를 생성해 준다.
@ToString 클래스의 필드를 확인해서 toString 메소드를 적절히 만들어 준다.

@Entity
@Table(name=sawon_hobby")
@Getter @Setter
@ToString(exclude={sawon", hobby"})
@NoArgsConstructor  //아규먼트 없는 생성자를 만듬
public class SawonHobby {
   ……
}

@EqualsAndHashCode : equlas hashcode 메소드를 만들어 준다.
@Data 클래스안의 모든 private 필드에 대해 @Getter @Setter를 적용하여 Getter/Setter를 만들어주고 클래스내에 @ToString  @EqualsAndHashCode를 적용시켜 메소드를 오버라이드 해주며 @RequiredArgsConstructor를 지정하여 생성자를 만들어 준다.
val : 로컬변수에 사용되며 final을 사용한것과 비슷한 효과를 내며 형식을 자동 유추하여 타입을 따로 쓰지 않고 변수를 선언할 수 있다.
@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor 생성자를 자동으로 만들어준다특히 자바에서는 파라미터 있는 생성자를 만들어 놓은 경우 기본생성자(인자없는 생성자)를 자동으로 만들지 않으므로 @NoArgsConstructor를 사용하면 유용하다.

@RequiredArgsConstructor, All non-initialized final fields get a parameter, as well as any fields that are marked as @NonNull that aren't initialized where they are declared. For those fields marked with @NonNull, an explicit null check is also generated.
@NoArgsConstructor creates an empty constructor.
@AllArgsConstructor creates a constructor for all fields

@Delegate 한 클래스에 다른 클래스의 메소드를 위임하여 생성하게 한다예문을 보자.

public class Test {
    @Delegate(types=Set.class)   //Set인터페이스의 메소드가 Test 클래스에 생긴다.
                                 //그리고 Test에서 Set의 메소드를 호출하도록 만들어준다.
    private final Set<String> emps = new HashSet<String>();
}
다음과 코드가 비슷하다.
public class DelegationTest {
    private final Set<String> emps =
                        new HashSet<String>();
    public boolean add(final String item) {
        return this.emps.add(item);
    }

    public boolean remove(final String item) {
        return this.emps.remove(item);
    }
    ......
}

@CommonsLog : Creates private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
@Log : Creates static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());
@Log4j : Creates private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);

@Slf4j : Creates private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);

댓글 없음:

댓글 쓰기