Eclipse 는 써봤는데 STS이라는 걸 알게되었다. STS란 뭘까?
SpringSource Tool Suite는 Eclipse 에 Spring F/W plugin 이 자동으로 추가된 IDE이다.
이클립스 확장판, 스프링에 특화된 이클립스라고 생각하면 된다.
찾아보니 spring.io 사이트에 접속해서 Projects> Development Tools > Spring Tools 4가 있었다.
📍 스프링 공식 사이트
장점
이클립스에 기본으로 포함안된 플러그인이 미리 세팅되어 있어서 편하다.
톰캣을 깔지 않아도 신규프로젝트를 생성하면 개발자용 톰캣 서버를 자동으로 생성해준다.
(하지만 필자는 톰캣 서버를 추가로 설치하여 사용하였다.)
별도로 설정하는 것 없이 프로젝트를 바로 만들어서 개발할 수 있다.
단점
필요없는 플러그인까지 다운받기 때문에 순정 이클립스에 비해 다소 무섭다.
스프링 관련 프로젝트가 아닌 경우, 설정이 복잡할 수 있다. 이클립스는 범용 IDE로 스프링 관련 프로젝트가 아닌 경우에 설정이 STS 보다 덜 복잡하다.
STS는 주로 스프링 개발에 특화되어 있어 스프링 이외의 다른 언어나 프레임워크에 대한 지원이 이클립스에 비해 제한적이다.
맞는 말이다. 필자도 이클립스를 쓰다가 인텔리제이로 금방 갈아탄 사람으로써 편리한 인텔리제이를 두고 왜 STS나 이클립스 같은 걸 써야하는가에 대한 의문이 많았다.
우선 인텔리제이보다 STS가 스프링에 더 특화되어 있기 때문에 더 많은 기능을 지원한다.
그리고 이게 제일 큰 이유 같은데 바로 '비용'이다.
인텔리제이는 유료이고, STS나 이클립스는 무료이다. 인텔리제이가 이클립스보다 조작이나 단축키, 플러그인 등 더 편리하다는 장점이 있어 인텔리제이가 더 뛰어나다는 생각이 들겠지만 이클립스는 인텔리제이에서 제공하는 거의 모든 기능을 지원한다. 그렇기 때문에 회사에서는 유료인 인텔리제이보다 STS나 이클립스 사용을 더 많이 한다.
(인텔리제이는 학생에게 무료로 제공하기 때문에 이 차이를 못느꼈다. 막상 돈을 내고 사용하려니 필자라도 이클립스나 STS를 사용할 것 같다.)
그래서 그동안 인텔리제이를 사용해왔더라도 STS나 이클립스에서도 스프링을 다룰 줄 알아야 한다.
IntelliJ vs STS 롬복 적용 방법 차이
IntelliJ의 경우 IntelliJ내에서 Plugins를 선택하고, 마켓플레이스에서 Lombok을 검색하여 설치할 수 있어 간단하다. 하지만 STS와 이클립스의 경우 Lombok JAR 파일을 다운로드하여 실행한 후, STS에 Lombok을 설치해줘야 한다.
그러면 STS에 롬복을 설치하여 적용해보자.
** lombok.jar 파일을 다운로드 한다.
롬복이 설치된 경로에서 Shift + 마우스 우클릭 을 하여 powerShell을 열어준다.
PowerShell 접속 후 lombok.jar 파일을 실행시킨다.
java -jar .\lombok.jar
lombok Installer 가 실행되면 Specify location을 클릭하여 STS 설치 경로의 IDE 실행 파일을 선택한다.
(SpringToolSuite4.exe)
install/update 를 해주고 exit 한다.
STS에 롬복을 적용하기 위해 pom.xml 에 아래의 lombok 의존성을 추가한다.
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.34</version>
<scope>provided</scope>
</dependency>
</dependencies>
pom.xml 파일을 저장하여 Maven Dependencies 에 lombok이 추가되었는지 확인한다.
Lombok을 적용할 코드를 작성하고, 애노테이션을 추가한 후 import를 해준다.
설치 중 문제상황
롬복을 성공적으로 임포트 했지만 오른쪽에 getXxx, SetXxx가 뜨지 않았다.
원인
getXxx, SetXxx가 뜨지 않는다면 경로 문제(maven repository 경로) 혹은 라이브러리 문제일 수 있다.
해결방법
사용자 경로에 접속하여 .m2 파일을 지웠다가 다시 롬복 dependency를 추가하여 재실행한다.
@Getter | code가 컴파일 될 때 getter 메서드들을 생성한다.- 속성 @Getter(lazy = true) 사용시 최초 한번만 Getter 호출. 이후 캐시된 값을 사용 |
---|---|
@Setter | code가 컴파일 될 때 setter 메서드들을 생성한다. |
@ToString | toString() 메서드를 생성한다. |
@Data | @Getter(모든속성), @Setter(final이 붙지 않은), @ToString, @EqualsAndHashCode, @RequiredArgsConstructor위의 어노테이션들을 합쳐둔 어노테이션이다. |
@NoArgsConstructor | 파라미터(매개변수)가 없는 생성자를 생성한다. |
@RequiredArgsConstructor | final, @NonNull이 있는 필드를 포함하여 생성자를 생성한다. |
@AllArgsConstructor | 모든 필드를 파라미터(매개변수)로 갖는 생성자를 생성한다. |
@Log4j, @Slf4J | Log4J(Slf4J) 설정을 이용하여 로그 기능 사용할 수있다.마찬가지로 log 변수를 통해 사용 한다. |