본문 바로가기
👨‍💻 개발/spring boot

[나만의 Blog 만들기] #3. 프로젝트 실행

by 말랑한곰탱이 2021. 10. 23.

 src/main/java 폴더에 이미 생성된 project가 하나 있을 것이다. 이곳에 project를 진행할 건데, 먼저 test를 해보자.

test라는 패키지를 만들고 그 안에서 테스트를 해볼 건데 마음대로 패키지나 클래스를 만들면 안 된다. 그 이유는 스프링의 IoC(제어의 역전) 때문이다. IoC에 따라 스프링이 클래스를 관리하기 때문에 프로젝트를 실행할 때 스캔을 통해 특정 어노테이션이 붙은 것들을 메모리에 로드한다. 이때 패키지 하위의 클래스나 패키지를 마음대로 설정하면 스캔이 제대로 되지 않아 메모리에 로드되지 않기 때문에 주의해야 한다.

 

우선, project.test 패키지를 만든다.

 

 

그리고 그 하위에 BlogControllerTest라는 클래스를 생성한다.

 

 

그리고 아래와 같이 작성한다.

 

 

Spring에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller와 @RestController가 있다. 전통적인 Spring MVC의 컨트롤러인 @Controller와 Restful 웹서비스의 컨트롤러인 @RestController의 주요한 차이점은 HTTP Response Body가 생성되는 방식이다. 쉽게 설명하면 @Controller는 html 파일을 반환하고 @RestController는 Data를 반환한다.
@GetMapping은 HTTP GET 요청을 특정 핸들러 메소드에 맵핑하기 위한  어노테이션이다. 

 

프로젝트를 실행하면... 오류가 난다!

"Failed to determine a suitable driver class"나 "Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set"라는 오류가 나는데, 이 에러는 스프링에서 database와 jpa를 사용한다고 설정해두고 정작 datasource는 설정을 안 해서이다. 아직은 사용하지 않기 때문에 pom.xml에 가서 주석 처리해주자.

 

 

실행하면 정상적으로 동작한다. 이제 url에 "http://localhost:8080/test/hello"를 치면 화면에 떠야 하는데 구름 ide를 사용하고 있으므로 실행 URL을 찾아 실행하자. '프로젝트 속성 -> 실행 URL과 포트'에 들어가면 실행 URL을 볼 수 있다.

 

 

나의 경우, https://springboot-rxayx.run.goorm.io/test/hello로 들어가면 return의 데이터 값이 정상적으로 반환된 것을 볼 수 있다.