โ ์ข์ ์ํํธ์จ์ด์ ๊ธฐ๋ฅ์ด๋ ๋ณต์กํ ๊ฒ์ ๊ฐ๋จํ๊ฒ ๋ณด์ด๋๋ก ๋ง๋๋ ๊ฒ์ด๋ค. โ
- Grady Booch
UML ๊ฐ๋ฐ์

์ธํ ๋ฆฌ์ ์ด Lombok ์ค์น ๋ฐฉ๋ฒ
๋กฌ๋ณต(Lombok)์ ์๋ฐ ํด๋์ค์์ ๋ฐ๋ณต์ ์ผ๋ก ์์ฑ๋๋ getter, setter, toString, ์์ฑ์ ์ฝ๋ ๋ฑ์ ์์ค๋ค์, ์ด๋ ธํ ์ด์ (Annotation)์ ์ฌ์ฉํ์ฌ ์๋ตํ ์ ์๋๋ก ์ปดํ์ผ ์์ ์ ์๋์ผ๋ก ์์ฑํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
@Getter
@Setter
@ToString
public class Store extends Common {
private String companyName; // ์ํธ๋ช
private String industryTypeCode; // ์
์ข
์ฝ๋
private String businessCodeName; // ์
ํ๋ช
private String industryName; // ์
์ข
๋ช
(์ข
๋ชฉ๋ช
)
private String telephone; // ์ ํ๋ฒํธ
private String regionMoneyName; // ์ฌ์ฉ๊ฐ๋ฅํ ์ง์ญํํ ๋ช
private boolean isBmoneyPossible; // ์ง๋ฅํ ์ง์ญํํ ์ฌ์ฉ๊ฐ๋ฅ ์ฌ๋ถ
private boolean isCardPossible; // ์นด๋ํ ์ง์ญํํ ์ฌ์ฉ๊ฐ๋ฅ ์ฌ๋ถ
private boolean isMobilePossible; // ๋ชจ๋ฐ์ผํ ์ง์ญํํ ์ฌ์ฉ๊ฐ๋ฅ ์ฌ๋ถ
private String lotnoAddr; // ์์ฌ์ง ์ง๋ฒ์ฃผ์
private String roadAddr; // ์์ฌ์ง ๋๋ก๋ช
์ฃผ์
private String zipCode; // ์ฐํธ๋ฒํธ
private double longitude; // ๊ฒฝ๋
private double latitude; // ์๋
private String sigunCode; // ์๊ตฐ ์ฝ๋
private String sigunName; // ์๊ตฐ ์ด๋ฆ
}
1. Lombok ์ค์นํ๊ธฐ
File โ Settings โ Plugins โ Marketplace์ lombok์ ๊ฒ์ํ๊ณ ์ค์นํด ์ค๋ค. ์ฐธ๊ณ ๋ก IntelliJ 2020.03 ์ดํ ๋ฒ์ ์์๋ ๊ธฐ๋ณธ Plugin์ผ๋ก Lombok์ด ์ค์น๋์ด ์๋ค.

2. Dependency ์ค์ ํ๊ธฐ
์๋ ์ถ๊ฐํ๊ธฐ
๋ง์ผ ์์ง Maven๊ณผ Gradle์ ๋ํ ๊ฐ๋ ์ด ์๋ค๋ฉด, ์๋์ ๊ฐ์ด ์ธํ ๋ฆฌ์ ์ด์์ ์ฝ๋์ ์ด๋ ธํ ์ด์ ์ ์จ์ฃผ๊ณ , ๋นจ๊ฐ์ค์ด ์ณ์ง๋ฉด ๋ํ๋๋ ๋์๋ง์ ํตํด ์๋์ผ๋ก ์ธํ ํ๋๋ก ํ๋ฉด ๋๋ค.


Maven ์ค์
pom.xml ํ์ผ์ ๋ค์ ํ๊ทธ๋ฅผ ์ถ๊ฐํด ์ค๋ค.
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>
Gradle ์ค์
build.gradle ํ์ผ์ ๋ค์ ๊ตฌ๋ฌธ์ ์ถ๊ฐํด ์ค๋ค
dependencies {
# lombok plugin
implementation('org.projectlombok:lombok')
annotationProcessor('org.projectlombok:lombok')
# test ํ๊ฒฝ
testImplementation('org.projectlombok:lombok')
testAnnotationProcessor('org.projectlombok:lombok')
}
3. Lombok ์ด๋ ธํ ์ด์ ํ์ฑํ ํ๊ธฐ
์ธํ ๋ฆฌ์ ์ด์์ ์ด๋ ธํ ์ด์ ํ๋ก์ธ์ฑ ํ์ฑํ๋ฅผ ํด์ฃผ์ด์ผ ์ด๋ ธํ ์ด์ ๊ธฐ๋ฐ์ธ lombok์ ์ฌ์ฉํ ์ ์๋ค.
File > Settings > Build, Execution, Deployment > Compiler > Annotation Processors ๋ก ์ด๋ํ์ฌ Enable annotation processing์ ํ์ฑํํด์ค๋ค.

์ธํ ๋ฆฌ์ ์ด jps.track.ap.dependencies ์ค๋ฅ ํด๊ฒฐ
Lombok ์์ฒด๋ ์ ์คํ๋๋ ๊ฒ ๊ฐ์๋ฐ ๊ฑธ๋ฆฌ์ ๊ฑฐ๋ฆฌ๊ฒ ์ด์ํ ์ค๋ฅ๊ฐ ๋ผ์ด์๋๊ฑธ ๋ณผ ์ ์๋ค.
JPS ์ฆ๋ถ ์ด๋ ธํ ์ด์ ์ฒ๋ฆฌ๊ฐ ๋นํ์ฑํ๋์ด ์์ต๋๋ค. ๋ถ๋ถ์ ์ฌ ์ปดํ์ผ์ ์ปดํ์ผ ๊ฒฐ๊ณผ๊ฐ ์ ํํ์ง ์์ ์ ์์ต๋๋ค. ๋น๋ ํ๋ก์ธ์ค "jps.track.ap.dependencies" VM ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฆ๋ถ ์ด๋ ธํ ์ด์ ์ฒ๋ฆฌ ํ๊ฒฝ์ ํ์ฑํ/๋นํ์ฑํํ์ธ์.

jetbrains ์ด์ ๋ ธํธ๋ฅผ ๋ณด๋ mapping processor ๋ด์์ NullPointerException๊ฐ ๋ฐ์ํ์ฌ ์ปดํ์ผ๋ฌ๊ฐ ์ข ์์ฑ ์ ๋ณด๋ฅผ ์์งํ์ง ๋ชปํด ๋ฐ์ํ๋ ๋ฌธ์ ๋ผ๊ณ ํ๋ค.
1. IntelliJ dependency ์ปดํ์ผ๋ฌ ์ต์ ์ ๋ช ๋ น์ ์ถ๊ฐ
Setting > Build, Execution, Deployment > Compiler > Shared build process VM options์ ๋ค์ ๋ช ๋ น์ค์ ์ถ๊ฐ
-Djps.track.ap.dependencies=false


์ต์ ์ ์ถ๊ฐํ๊ณ ๋ค์ ์๋ฐ ํ๋ก์ ํธ๋ฅผ ์คํํด๋ณด๋ฉด JPS ์๋ฌ๊ฐ ๋ง๋ํ ์ฌ๋ผ์ง๋๊ฑธ ํ์ธ ํ ์ ์๋ค.
์ด ๊ธ์ด ์ข์ผ์ จ๋ค๋ฉด ๊ตฌ๋ & ์ข์์
์ฌ๋ฌ๋ถ์ ๊ตฌ๋
๊ณผ ์ข์์๋
์ ์์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค.