uju's Tech

[JAVA: Enum] 서비스 마다 변수가 달라질 때? 본문

Programming/Java 이모저모

[JAVA: Enum] 서비스 마다 변수가 달라질 때?

ujusy 2020. 6. 13. 03:41

<본 포스팅은 공부목적으로 작성되었습니다. 혹시 틀린 부분이 있거나 문제가 되는 부분이 있다면 답글 달아주세요!>

 

 

개발 중에 서비스에 따라서 Path가 변하도록 확장해주어야 하는 상황이 발생했다. 

 

본론을 말씀드리기 전에 말씀드리면 이 방법은 채택하지 않았으나 이러한 방법도 있다는 것을 공유하기 위해 작성하였습니다.

선택한 방법은 다음 주에 포스팅을 진행하도록 하겠습니다!


간략하게 enum에 대해 소개해보자면 enumeration의 약자로 프로그래밍 언어에서 상수의 그룹을 나타낼 때 사용합니다.

Java에서의 enum은 변수, 메소드, 생성자를 추가할 수 있습니다.

 

enum의 첫 번재 라인은 상수 리스트가 되어야하고 메소드, 변수나 생성자가 올 수 있습니다,

모든 enum은 내부적으로 public static final로 정의 됩니다.


Step1 . 먼저 enum을 생성해 주자!

public class Services{
public enum package{
  service1(PATH1, DIR1, JOBNAME1, STEPNAME1);
  service2(PATH2, DIR2, JOBNAME2, STEPNAME2);
  
  private String PATH;
  private String DIR;
  private String JOBNAME;
  private String STEPNAME;
  
  package(String PATH, String DIR, String JOBNAME, String STEPNAME){
    this.PATH = PATH;
    this.DIR = DIR;
    this.JOBNAME = JOBNAME;
    this.STEPNAME = STEPNAME;
  }
  
  public String getPATH(){ return PATH};
  public String getDIR(){ return DIR};
  public String getJOBNAME(){ return JOBNAME};
  public String getSTEPNAME(){ return STEPNAME};
}
}

 

Step2. 불러와 주자!

 

 Service.package key = Service.package.serviceId;
  
  String PATH = key.getPATH();
  String DIR = key.getDIR();
  String JOB_NAEM = key.getJOBNAME();
  String STEP_NAME = key.getSTEPNAME()

동일한 class에서 enum을 생성해 주어도 다른 class를 만들고 생성해 주어도 무관하다. enum을 사용하게된 경우는 Spring batch 개발을 진행하면서 class를 각대한 결국 확장성 때문이었는데 enum을 사용할 경우 job마다 data를 작성하게 되면 정적으로 추가될 때마다 코드를 바꾸어 재배포 해야하는 불편함이 발생하였습니다.

 

요약하자면

단점: 정적으로 추가될 때마다 코드를 바꾸어 재배포 해야 됨. 

결과적으로 확장성이 좋은 코드라고 말할 수 없다.

여러 Job에 서비스가 사용되면서 다른 DIR을 사용할 수 있는데 이러한 경우도 반영하지 못한다. 

 

Comments