IntelliJ 에서 snakecase 를 camelcase 변경작업 정리
IntelliJ 에서 snake_case 를 camelCase 변경작업 정리
front-end 의 뷰(view)단에서 서버로 전송하기 위한 파라메터명 즉 폼 데이터 네이밍에는 _ (underbar) 를 사용하고
back-end 즉 컨트롤러(controller) 단에서는 _ 사용하지 않고 데이터를 바인딩하기 위한 작업을 정리하였다.
나같은 경우 모든 레이어(form, model, domain)에 snake_case (underbar 사용한 네이밍)를 사용하고 있는 터라 한번에 많은 파일을 수정해야 했다.
json 은 jackson 라이브러리를 사용하고 있다.
jackson 에서 네이밍을 변경해주는 어노테이션이 @JsonNaming(value = PropertyNamingStrategy.LowerCaseWithUnderscoresStrategy.class)
있는 데 자식에게도 영향이 가기때문에 사용을 추천하지 않는 데.
위 어노테이션은 아래와 같이 작동된다.
user_name => userName
userName => user_name
대상의 네이밍에 의해 적용되는 결과가 틀려진다. 그래서 모든 네이밍이 일치하지 않는 다면 사용하지 않는 것이 좋다. 그렇다면 아래와 같이 JsonProperty 사용하여 일괄적으로 수정해야 한다.
class Foo {
@JsonProperty("user_name")
private String userName;
@JsonProperty("fooList")
private List<Foo2> fooList;
getter ...
setter ...
}
model or domain 의 필드를 snakecase -> camelcase 일괄 변경하기.
< / > 원본소스
class Foo {
private String user_name;
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getUser_name() {
return this.user_name;
}
}
위의 소스를 아래와 같이 수정된다.
class Foo {
private String userName;
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserName() {
return this.userName;
}
}
개발툴은 IntelliJ 를 기반으로 설명한다.
commend + shift + r
누르면 검색창이 실행된다.
검색할때 중요한것은 model 이나 domain 클래스만 찾을 수 있는 패턴이 있어야 정확한 처리가 가능해진다.
Text to find : 검색 패턴을 입력한다. 여기에 아래와 같이 작성한다.
_([a-zA-Z0-9]+)
Replace with : 검색된 문구를 치환할 패턴을 입력한다.
\u$1
IntelliJ 나 sublime 등의 정규식 치환시에 동일하게 사용되는 키워드다.
\u
: 첫글자만 대문자로 치환한다.\l
: 첫글자만 소문자로 치환한다.
_
를 가진 문자를 찾아 _
는 제거하고 첫글자를 대문자로 수정해준다.
즉 Foo 클래스에서 _name 모두 찾아 Name 으로 변경한다.
Generl에서 Case sensitive
와 Regular expression
체크한다. (Help 를 클릭하면 정규식에 대한 도움말을 볼 수 있다.)
Scope 에서 대상 파일을 설정하는 데 패턴을 이용하여 model 과 domain 만 검색할 수 있게 해줘야 한다.
그래서 Custom 을 선태하고 ...
확장 버튼을 누른다.
+
눌러 대상을 추가한다.
Name 는 다음에도 쉽게 알아볼 수 있게 이름을 정한다.
폴더 트리에서 적당한 최상위 경로를 선택하고 Include 버튼을 클릭한다. (Exclude 는 제외할 수 있다.)
include 하면 패턴에 file[eGovMEI2]:src/main/java/egovmei/*
이런식으로 등록될 것 이다.
나는 도메인만 검색할 수 있게 뒤에 패턴을 더 추가해줬다.
file[eGovMEI2]:src/main/java/egovmei/*/domain/*.java
이런식이 된다. 그리고 ok 를 클릭한다.
그렇게 검색된 결과를 preview 에서 볼 수 있다. Find 클릭하면 치환을 어떻게 할 것인지 물어본다. all files 를 선택하면 된다.
model or domain 에 @JsonProperty 넣기
commend + shift + r
다음에 패턴을 아래와 같이 입력한다.
Text to find : (private )([A-Za-z<>]+) ([a-z0-9]+)([A-Z][a-z0-9]+);
Replace with : @JsonProperty("$3_\l$4") $0
이렇게 일괄적으로 치환이 되면 IntelliJ 에서 친절하게 오류사항을 알려준다. 하나하나 수정을 해야하는 데...
이건 IntelliJ에 플러그인을 사용하면 된다.
String Manipulation
플러그인을 설치한다.
그리고 설정의 keymap 에서 To snake_case (or to camelCase)
찾아서 사용이 편한 단축키로 변경한다.
나는 ctrl + option + 마우스중간버튼
으로 설정했다.
이제 오류가 발생하는 곳은 위 단축키로 하나식 정리해주면 된다.
더 좋은 방법을 찾기보다 급하게 해결해야되서 이렇게 당장 할 수 있는 방법을 정리해보았다. 아직 작업이 진행중이라... 더 좋은 방법을 찾게된다면 내용을 추가할 것 이다.
'개발노트 > 정보' 카테고리의 다른 글
인텔리j로 개발할때 편리한 기능 : IntelliJ (0) | 2016.08.11 |
---|---|
Slfj4 & Logback 설정. Log4j (0) | 2016.04.20 |
IntelliJ 내가 사용하는 설정 및 단축키 정리 for Mac (0) | 2016.02.03 |
인텔리J 톰캣 설정 : IntelliJ Tomcat setting (0) | 2015.11.10 |