반응형

자바에서 코드를 작성 시 모델을 만들다 보면 constructor와 기본 getter/setter.. 그리고 상황에 따라서 builder를 만들어 사용해야 합니다.

그런데 이런 일들을 모두 타이핑 하다 보니 보일플레이트 같은 코드들이 많이도 써야 합니다. 코드 제너레이터들이 있어서 편하게 할 수 있긴 하지만 더 편한 방법이 없을까요?

저같은 경우는 lombok을 사용해서 모델 객체들의 불필요한 보일플레이트 코드들을 줄이고 있습니다. annotation방법으로 사용하기 때문에 사용방법도 간단합니다.



1. @Getter / @Setter

기본적으로 멤버필드들에 대한 getter/setter메소드들을 만들어 줍니다.


2. @AllArgsConstructor / @NoArgsConstructor

멤버필드들이 모두 파라미터로 지정된 생성자와 빈 생성자를 만들어 줍니다.


3. @Builder

모델을 빌더 패턴으로 만들어 줍니다.


4. @ToString

toString의 override된 메소드를 만들어 줍니다.


그 외에도 여러 가지가 있지만 lombok features 에서 더 많은 것을 확인할 수 있습니다.



그럼 AndroidStudio에 적용하는 방법을 알아보도록 하죠.


1. 우선 lombok plugin을 설치해야 합니다.

Preference -> Plugins -> Browse Repositories 에서 lombok을 검색하면 Lombok Plugin이 나옵니다. 이걸 설치해 줍니다.


2. gradle에 lombok적용하기.

"""

provided "org.projectlombok:lombok:1.16.8"

"""


3. 트러블슈팅??

 - package javax.annotation does not exist

annotation does not exist...이걸 해결해 주기 위해서 gradle에 annotation을 provide해줍니다.

"""

provided 'org.glassfish:javax.annotation:10.0-b28'

"""


 - cannot find symbol class ConstructorProperties

lombok.config 설정파일을 추가해 줘야 합니다. 프로젝트와 같은 root에 lombok.config파일을 만들고

'''

lombok.anyConstructor.suppressConstructorProperties = true

'''

와 같은 내용을 추가해 줍니다.

자세한 내용은 Configuration system 에서 확인할 수 있습니다.




이와같은 과정 후에 결과를 보게 된다면

AndroidStudio의 structures view를 보게 되면

이와 같은 결과를 볼 수 있습니다.


이제 lombok을 이용해서 코드 다이어트를!!

반응형
반응형

Sqlite는 안드로이드를 사용하면서 가장 많이 사용하는 db가 아닐 까 생각됩니다. 나온지도 오래 됐고, 처음부터 안드로이드에 적용하여 사용하다보니 안정성도 보장되어 있구요. 그런데 sqlite를 안드로이드에서 이용하기 위해서는 보일플레이트 코드가 많이 들어갑니다. Helper객체와 Provier객체가 필요하죠. 상황에 따라서는 Provider객체를 만들지 않고 사용할 수도 있지만요.

이번에 사용해보면서 나름 괜찮다고 생각되는 라이브러리입니다. Square에서 나온 Sqlbrite입니다. React programming을 할 수 있도록 도와줍니다.

sqlbrite git주소에 가면 dagger를 이용한 샘플이 존재합니다. 그런데 이 샘플은 square에서 내놓은 dagger1이죠. 

그래서 전 Dagger2를 이용한 샘플을 준비해 볼 까 합니다.

이전에 Dagger2를 이용한 개발 방법을 얘기 한 적이 있습니다. 

Android 개발에서 Dagger2이용해보기.

Dagger1과 Dagger2는 DI관점에서는 차이가 없지만, 사용방법에 대해서는 조금 차이가 있습니다. 그건 

http://google.github.io/dagger/dagger-1-migration.html

의 내용을 보면 알기 쉬울 듯 합니다.

아직 library버전이 v0.x대의 버전입니다. 사실 오픈소스 라이브러리를 v1.x대가 아니라면 사용하는데 꺼려지긴 합니다. 그래서 이걸 사용하는데 믿음직한 이유가 제이크 왓슨 형님과 스퀘어에서 내놨다는 이유이지 않을 까 합니다 하하.

샘플은 

https://github.com/drcarter/Dagger2Example

에 있습니다. Sqlbrite에 있는 샘플과 같은 내용이지만 단지 Dagger2로 변경한 부분입니다.

반응형

+ Recent posts