Spring boot를 사용할 때 알고 있으면 어떤 상황에 어떤 기능을 사용할지 예상하기 좋다.
여기선 기본적으로 알두면 좋은 점들을 적어보겠다.
Gradle 은 빌드 자동화 시스템으로 우리가 작성한 java 코드를 설정에 맞게 자동으로 Build 해준다.
위의 화면과 같이 빌드를 통해 간편하게 Java 소스 코드를 실행한 가능한 jar 파일로 만들어준다.
다음으로는 build.gradle 로 쉽게 말해 Intellij를 이용해 Spring boot를 생성하고 코딩할때 사용한 버전이나, 라이브러리등 을 확인 하거나 파일에 직접 추가해 사용 할 수 있게 작성하는 Gradle 기반의 빌드 스트립트이다.
plugins 에서 Spring boot의 버전 등을 확인 할 수 있고 dependencies 에선 적용되어 있는 라이브러리를 확인 할 수 있고 또 직접 입력해서 적용 할 수 있다.
여기서 추가적으로 알아두면 좋은 정보로 Spring boot는 Maven이란 빌드 도구가 하나 더 있다.
Maven은 Gradle의 builde.gradle과 같이 빌드 중인 프로젝트, 빌드 순서, 다양한 외부 라이브러리 종속성 관계를 pom.xml파일에 명시 하는데 Gradle에서 사용하는 Groovy 언어와는 달리 표시가 복잡하다.
Maven보단 Gradle을 사용하는것이 안전성과, 속도와 같은면에서 더 좋고 무엇보다 코드의 가독성이 더 좋은것 같다.
Spring boot를 사용할 때 만이 아닌 다른 환경에서의 작업을 할때에도 WEB과 WAS를 구분해서 알고 있다면 좋을것 같다.
Web Server는 간단하게 정적인 웹페이지를 처리하고 동적인 요청은 WAS에 전달 해준다고 생각하면 편할것 같다.
예를들면 어떤 사용자나 동일하게 표시되는 페이지는 Web Server 부분이고 이 페이지에서 로그인 등과 같이 사용자에따라 다르게 표현되는 페이지는 WAS에서 처리하는 부분이라고 생각하면 될것 같다.
Web Server는 Apache나 Ngnix 등이 있고 WAS는 대표적으로 Tomcat이있는데 Spring boot는 이 Tomcat을 내장하고 있어 따로 설정하지 않고 사용할 수 있는 편리함이 있다.
테스트 코드란 말그대로 작성한 코드를 테스트하는 것으로 여기선 자바 프로그래밍 언어 용 단위 테스트 프레임워크인 JUnit을 살펴보겠다.
JUnit을 단위 테스트라 하는것은 아래와 같이 코드가 작성되어 있다고 생각하고 알아보자.
초록색으로 표시된 부분 즉 클레스를 실행하면 안의 두개의 함수가 실행되고, 보라색으로 표시되어있는 함수를 하나씩 따로 따로 실행하면 한개의 함수가 실행된다.
이처럼 클레스단위로 실행하거나 함수단위로 실행해서 결과가 생각했던 것과 같은지 확인 할 수 있다.
Spring boot는 위와같이 main 에서 코드를 작성하면 test 에서도 같은 패키지명의 파일이 생성되고 test 파일에서 main에서 작업한 함수의 기능을 테스트 할 수 있다.
이러한 test 파일을 JUnit이라하고 JUnit은 java와 달리 main() 메서드 없이 실행이 가능하다 그이유는 JUnit은 테스트 실행 환경을 가지고 있기 때문이다.
이러한 환경 덕분에 각가의 메서드 혹은 기능별로 테스트 코드를 작성하여 실행시킬 수 있다.
Lombok은 메서드와 생성자 등을 자동으로 생성 해준다.
이러한 설명을 들었을땐 코드 작업때 print를 쓸 때 pri만 써도 자동완성을 보여주는 것과 같은거라 생각했다.
하지만 이 Lombok은 어노테이션을 사용해 클레스에서 정의되어있는 필드나 생성자 등을 자동으로 생성해 주는것이였다.
위와같이 클레스 위에 @Getter와 @Setter을 선언하고 빌드하면
이러한 경로의 Memo 파일에
필드들을 get/set 할 수 있는 메소드가 생성된다.
이파일을 읽기 전용으로 수정 할 수 없고 빌드를 통해 바뀐다.
이러한 Lombok을 사용해 get/set 메소드를 타이핑 하지않고 바로 기능을 사용할 수 있다.
여기서 필드들의 중복되는 get/set 메소드를 줄여 코드가 깔끔해진다.
get/set뿐이아닌 생성자 등도 가능하다.
application.properties 파일은 Spring과 관련되 설정을 할 때 사용되는 파일이다.
예를들면 데이터베이스 연결 과 같은 정보를 위 파일을 이용해 쉽게 전달 할수있다.
데이터베이스의 주소와 비밀번호 입력등 을 입력한 뒤 코드를 실행하면 데이터베이스의 데이터들을 CRUD 할 수 있는것 같다.
지금 사용해보는건 localhost의 포트번호를 변경해보는 실습 뿐이지만 나아가서 데이터베이스 저장소를 연결하고 CRUD를 구현해 볼 예정이다.
다음은 포트번호를 변경하는 간단한 예제이다.
파일 경로와 포트번호를 변경하는 코드이다.
실행결과는 다음과 같다.
위와같이 포트가 8081로 변경된것을 확인 할 수 있다.
이파일에서 데이터베이스 연결과 포트번호 변경과는 다른 어떤 기능이 있을지 기대된다.