Guava: Google Core Libraries for Java
구아바는 구글에서 만든 코어 자바 라이브러리의 집합체이다. multimap과 multiset과 같은 새로운 컬렉션 타입들이나 그래프 라이브러리, 유틸리티, 캐싱 등 여러가지 요소들이 포함되어 있다. 구글 뿐만 아니라 여러 기업들에서 대부분의 자바 프로젝트에 폭넓게 사용된다.
참고해야 할 점
※ JRE 버전은 1.8 이상이어야 함
※ 안드로이드에 적용하려면 안드로이드 버전 구아바를 사용해야 함
Adding Guava to your build
✔️ Maven
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.1-jre</version>
<!-- or, for Android: -->
<version>31.1-android</version>
</dependency>
✔️ Gradle
dependencies {
// Pick one:
// 1. Use Guava in your implementation only:
implementation("com.google.guava:guava:31.1-jre")
// 2. Use Guava types in your public API:
api("com.google.guava:guava:31.1-jre")
// 3. Android - Use Guava in your implementation only:
implementation("com.google.guava:guava:31.1-android")
// 4. Android - Use Guava types in your public API:
api("com.google.guava:guava:31.1-android")
}
CaseFormat
표기법을 변경해 주는 Enum 클래스인 CaseFormat이다. LOWER_CAMEL, LOWER_HYPHEN, LOWER_UNDERSCORE, UPPER_CAMEL, UPPER_UNDERSCORE 이렇게 Enum 상수 다섯 개로 구성되어 있고 본인에게 맞는 상수를 골라 사용하면 된다.
배치 작업을 하면서 xml파일에 쿼리문을 두고 각 테이블의 컬럼을 읽어올 때 문제가 생겼다. DTO파일의 필드명을 카멜표기법에 맞춰 작성했는데 이 필드명과 맞추기 위해 쿼리문에서 alias로 카멜표기법을 적용한 컬럼명을 주면 대소문자 구분 없이 대문자로만 읽혔다. DTO파일의 필드명을 변경해서 맞출 수는 있지만 기존에 camel case를 쓰던 룰을 깨야 해서 어떻게 하면 카멜표기법으로 컬럼명을 읽어올 수 있을까 고민했다.
우선 alias를 삭제하고 그대로 기존의 컬럼명을 읽어오게 했다.
sort_order -> SORT_ORDER
그리고 map에 컬럼명이 담아주는 ColumnMapRowMapper를 상속받는 ModifiedColumnMapRowMapper를 만들었다. 여기서 key를 가져오는 메서드를 오버라이딩해서 아래와 같이 코드를 변경해 줬다.
String convertedName =
CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, columnName);
// 현재컬럼의표기법.to(원하는표기법, 컬럼이름)
이렇게 하면 현재 대문자+언더바 조합을 소문자+카멜표기법 형태로 바꿀 수 있다.
ref.
- https://github.com/google/guava
- https://guava.dev/releases/20.0/api/docs/com/google/common/base/CaseFormat.html
'Java' 카테고리의 다른 글
[Java] 객체를 생성하는 다양한 방법 (0) | 2023.01.30 |
---|---|
[Java] String의 불변성은 SCP로부터 (0) | 2023.01.27 |
[Java] Method Area, PermGen 그리고 Metaspace (0) | 2022.10.06 |
JUnit5 (0) | 2022.09.11 |
[JAVA] 정규 표현식 - Matcher, Pattern, find(), group() (0) | 2022.07.13 |