Spring boot 입문(김영한 강의), 환경설정 및 시작

2023. 9. 11. 01:23Spring

 다른 김영한님의 강의 중에서 무료가 아닌 부분은 저작권도 있고해서 비밀번호를 걸었지만, 이 강의는 비밀번호를 걸 필요가 없을 것 같아서 공개로 올려놨다.

 

 김영한님의 강의가 몇 년이 지났기 때문에 요즘 돌아가는 것과 조금 다른 면도 있어서 다른 설정 부분도 올리면 해당 강의와 현재와의 간극도 어느정도 메꿀 수 있을 것이라고 생각한다. 해결방법 대부분은 커뮤니티나 오류 메세지를 보고 인터넷에 검색하면 문제가 없으니 그렇게 해결하길 바란다.

 

Spring 환경설정

 start.spring.io를 주소창에 입력하고 접속해서 다음과 같이 옵션을 주고 다운로드 받았다.

우선 해당 강의는 gradle을 기준으로 강의가 설명되고 있다. 해당 강의 설정은 11이었나 8인가 그랬는데 Spring 버전 3이상부터는 Java 17이상이 아니면 gradle을 powershell 가서 build를 하면 fail이 뜬다. 매우 스트레스 받는 과정이니 미리 17로 하고 인텔리제이에서도 17로 미리 다운로드를 받아놓자.

 

그리고 오류가 날 때가 있는데, 이건 no JDK 어쩌고저쩌고하는 에러가 뜬다 이 문제는 인텔리제이에서 JDK설정을 해주면 된다. Ctrl + Alt + shift + s 키를 누르면 JDK를 설정하는 부분이 있는데 17로 맞춰서 설정을 해주면 되고 SDK Default로 설정해주면 문제없이 잘 돌아간다.

 

웹 페이지 생성 및 확인

Spring은 기본적으로 resources 파일의 static 폴더의 하위에 index.html을 메인 페이지로 삼는다. 해당 코드 부분은 강의에 나와있으므로 적지 않겠다.

 

Hello

안녕하세요. 손님

 

해당 내용을 resources의 templates의 하위폴더의 hello.html이라는 이름으로 작성을 하자. thymeleaf의 문법대로 작성을 한 것이라고 하는데, ${data}부분을 잘보고 이제 controller를 만들자.

 

hellospring에서 controller package를 만들고 HelloController.java파일을 만들고 다음과 같이 적자.

 

@Controller
public class HelloController {
    @GetMapping("hello")
    public String hello(Model model){
        model.addAttribute("data", "hello!");
        return "hello";
    }
}

 

 내가 이해한 바로는 GetMapping은 뒤에 해당 페이지 부분을 만든 것이라서 localhost:8080/hello의 hello 부분을 의미하는 것이고 model.addAtrribute부분은 data라는 이름으로 된 html에서 ${data}부분과 나중에 매핑이 돼서 해당 내용을 hello!로 바꾸는 역할을 한다. 그리고 hello가 return되는 건 hello.html을 resources의 templates에서 찾아서 해당 내용과 연결을 하는 그런 역할을 한다.

 

 

이제 gradlew를 찾아서 ./gradlew build를 하려고 하면 이제 스트레스가 확온다. 뭔가 오류 메세지가 주르륵 뜨는데 version이 대충 안 맞는다는 말인 것 같다. JDK 17로 gradle.build 파일에는 설정해놨는데 지금 내 PC에서는 예전에 공부할 때 설치한 java8으로 설정돼 있어서 라는 것 같다. 자바 17을 다운로드 받고 window + R키를 눌러서 시스템 속성 칸에 가서 환경 변수에 간 다음 해당 패스에 맞게 설정해놨다. 나는 해당 경로 설정을 제대로 해주니까 일단은 해결되었는데 아무튼 나중에.. 배포하는 용으로 사용하자.