작심 365
[스프링 입문 강의 정리] sec1. 프로젝트 환경 설정 본문
김영한님 스프링 입문 강의를 보고 학습한 내용을 정리한 글 입니다.
스프링에서 운영하는 스프링 프로젝트를 쉽게 만들수 있도록 도와주는 사이트 입니다.
가장 먼저 Project 설정 부분에서 Maven 과 Gradle 로 나뉘고 Gradle에서 Groovy 와 Kotlin 으로 언어를 선택할수 있습니다.
강의에서 사용하는 언어는 Groovy 입니다.
Maven과 Gradle 둘다 프로젝트를 빌드 하는데 도움을 주고 라이브러리를 관리해주는 도구 입니다. 각자 특징과 장단점이 있지만
Maven은 과거에 많이 사용했고 지금은 Gradle을 많이 사용하고 있습니다.
다음으로 스프링 부트 버전을 선택할수 있는데 3버전부터는 강의와 설정을 다르게 해줘야 하는 부분이 있어서 2버전중 최신 버전을 선택했습니다. 참고로 snapshot 이 붙은 버전은 정식 버전이 아니기 때문에 없는걸로 선택해 주면 됩니다.
강의에서 사용하는 라이브러리는 Spring Web 과 Thymeleaf 두가지 입니다.
Spring Web의 경우는 저희가 만들 프로젝트가 웹 사이트 이기 때문에 선택을 해주었고, Thymeleaf는 템플릿 엔진 인데
server-side java template engine 입니다. 즉, 서버에서 동적인 html 을 내려주기 위해서 사용합니다.
프로젝트를 열어보면 폴더 구조가 이런식으로 생긴것을 볼 수 있습니다.
우리가 대부분의 코드를 작성할 부분은 src 폴더이고 src 폴더 하위에 main과 test 폴더가 있습니다.
main폴더는 은 우리가 개발을 하면서 작성하는 곳이라고 보면 되고, test폴더는 는 test 코드를 작성하는 곳입니다.
요새는 테스트 코드의 작성이 중요해졌기 때문에 테스트 코드 작성은 거의 필수라고 보면 됩니다.
main 폴더를 펼치면 하위 폴더들이 나오고 가장 밑에 있는 HelloSpringApplication 이라는 클래스 파일이 main 메서드가 있는 해당 프로젝트의 시작점이라고 보시면 됩니다. 참고로 추가 폴더나 파일을 작성할때 이 main 메서드가 있는 파일보다 상위에 위치하지 않게 주의해야 합니다.
resources 폴더는 java 파일은 제외한 파일들이 들어가는데 xml설정파일, html 파일, 이미지 파일 등등이 들어갑니다.
마지막으로 build.gradle 파일인데, 여기서 스프링 부트와 자바에 대한 버전등을 확인할수 있고 필요한 외부 라이브러리들을
가져올수 있도록 설정을 해주는 매우 중요한 파일입니다.
dependency 부분에 보면 아까 우리가 추가해주었던 spring web과 thymeleaf 라이브러리가 있는 것을 볼 수 있습니다.
dependency 에 적혀있는 여러 라이브러리들은 repositories { } 안에 적혀있는 mavenCentral() 이라는 사이트에서 가져오게 됩니다.
다음은 thymeleaf 사용 예시와 동작 원리에대해서 설명합니다.
thymeleaf는 동적 템플릿 엔진 이라고 했으므로 동적인 데이터를 넣을수 있는 html 을 생성할 수 있습니다.
우선 컨트롤러를 하나 만들어서 해당 url을 입력했을때 동적인 html 파일을 하나 내려주도록 합니다.
@Controller annotation 은 주로 view (html ) 을 반환하기 위해서 사용하며, 해당 어노테이션을 타고 들어가면 @Component 어노테이션이 선언 되어있는 것을 볼 수 있습니다. 즉, 스프링이 해당 클래스를 스캔해서 Bean에 등록할수 있게 해줍니다.
@GetMapping 은 get 방식으로 url을 요청할때 사용 합니다.
위 예제에서는 localhost:8080/hello라는 url로 들어오면 hello 라고 정의한 메서드가 실행되는데 이 메서드는 Model 객체를 받아서
이 객체에 키는 "data", 값은 "hello!!" 라는 정보를 실어줍니다.
그리고 "hello" 를 return 해 주는데, 여기서 이 hello는 resources/templates/ 아래에 있는 html파일들 중에 이름과 일치하는 파일을 찾아 데이터를 실어서 렌더링 해줍니다. 이때 viewResolver 라는 것이 화면을 찾아줍니다.
viewResolver 가 화면을 찾는 기본 경로는 값은 다음과 같습니다. -> resources:templates/+(viewName) + .html
resource 폴더에는 static과 templates라는 폴더가 이미 만들어져 있는데, 여기서 static은 정적인 html 파일, templates 폴더에는 동적인 html 파일을 넣어줄 수 있습니다. thymeleaf 를 사용하기 위해서 templates 폴더 밑에 html 파일을 하나 생성해 주었습니다.
hello.html 파일에서는 thymeleaf 문법을 사용하여 컨트롤러에서 넘겨준 데이터를 보여줄 수 있습니다.
프로젝트를 다 완성을 했다면 빌드를 하고 실행을 시킬수 있습니다. intelliJ 로는 상단에 초록색 삼각형 Run버튼을 하나로 이 모든 것을 할 수 있습니다.
터미널에서는 명령어를 사용하는데, 프로젝트 폴더 안으로 들어와서 맥 기준 ./gradlew build 라는 명령어를 치면 프로젝트가 빌드됩니다. 빌드된 파일은 build/libs 폴더 아래에서 확인할 수 있습니다.
빌드된 파일은 java -jar hello-spring-0.0.1-SNAPSHOT.jar 명렁어를 통해서 실행 시켜줄 수 있습니다.
./gradlew clean 명렁어를 통해서 build 된 폴더를 삭제할 수 있고,
./gradlew clean build 명렁어를 통해서 build 된 폴더를 삭제하고 다시 생성해 줄 수 있습니다.
'Back-End > Spring' 카테고리의 다른 글
[Spring 개념 정리] Spring Filter (1) | 2025.01.15 |
---|---|
[Spring Security] Security 설정 후 일어나는 일 (2) | 2024.04.06 |
[스프링 입문 강의 정리] sec2. 스프링 웹 개발 기초 (1) | 2023.11.07 |