서론
팀 내 코드리뷰를 하다 패키지에 package-info.java 파일이 존재한다는 사실을 알게 되었습니다. package-info.java가 무엇인지 잘 몰랐기에 이번 기회에 알아보고자 합니다.
package-info.java란
package-info는 모든 Java 패키지에 추가할 수 있는 Java 파일입니다. package-info.java 파일은 2가지 목적으로 사용됩니다.
- 패키지 단위의 문서 작성
- 패키지 단위의 애노테이션 적용
1) 패키지 단위의 문서 작성
JDK5 이전에는 package.html을 통해 패키지 단위의 Javadoc 코멘트를 body 태그 안에 작성했습니다. 그러나 JDK5 이후에는 package-info.java가 등장해 package.html의 역할을 대신하기 시작했습니다. package-info.java의 예시는 다음과 같습니다.
/**
* 이 클래스는 javadoc의 생성 방법과 예제에 대한 학습 테스트이다.
* <p>
* 이 클래스는 javadoc의 애노테이션과 활용 방법에 대해 알아본다.
* 또한, package-info.java의 생성과 활용 방법에 대해 살펴본다.
* </p>
*
* @since 1.0
* @author yeongun
* @version 1.1
*/
package com.example.javadoc;
위의 package-info.java를 패키지 내 생성하면 아래와 같은 Javadoc이 생성됩니다.
2) 패키지 단위의 애노테이션 적용
패키지에 공통적인 애노테이션을 적용해야할 때 package-info.java를 활용할 수 있습니다.
필드, 파라미터, 반환값이 기본적으로 NotNull인 상황을 예로 들어 봅시다.
이 경우 파라미터나 반환값이 Null이 아니어야 되는 상황에서는 @NonNullApi 애노테이션을, 필드가 Null이 아니어야 되는 상황에서는 @NonNullFields 애노테이션을 package-info.java 파일에 적용하면 됩니다.
@NonNullApi
@NonNullFields
package com.example.javadoc;
import org.springframework.lang.NonNullApi;
import org.springframework.lang.NonNullFields;
보통 파라미터나 반환값이 NotNull이어야 되는 모듈 클래스에 package-info.java를 생성해 @NonNullApi를 적용하는 방식으로 많이 활용합니다.
이 외에도 패키지 단위의 애노테이션 적용이 필요한 상황이라면 간단히 package-info.java에 애노테이션을 붙임으로써 문제를 해결할 수 있습니다.
package-info.java 파일을 만드는 법
인텔리제이에서 패키지를 오른쪽 클릭한 뒤 New > package-info.java를 클릭해 파일을 생성할 수 있습니다.
결론
이 글에서는 package-info.java의 목적과 생성 방법에 대해 살펴봤습니다. package-info.java는 패키지 단위의 문서화나 애노테이션 적용이라는 목적을 갖고 있습니다. 실제로 현업에서는 Javadoc 대신 스웨거나 다른 툴을 이용해 문서화를 하기 때문에 패키지 단위의 공통 애노테이션 적용에 package-info.java를 사용합니다. package-info.java를 사용하면 중복 코드를 손쉽게 제거할 수 있다는 장점이 있기에 적절히 활용하는 것이 좋은 코드습관이라고 생각합니다.
참고 문헌
'Programming > Java' 카테고리의 다른 글
JPA Entity의 equals와 hashCode (0) | 2022.08.08 |
---|---|
Optional (0) | 2022.07.01 |
컨트롤러는 상태를 가지면 안된다. (0) | 2022.03.03 |
자바 추상클래스와 인터페이스 (0) | 2021.10.02 |