본문 바로가기
Server/Spring Boot

SpringBoot #2 Hello World 삽질

by HaningYa 2020. 4. 22.
728x90

[이전글]

 

SpringBoot #1 개발환경 세팅(Mac)

[참고한 튜토리얼] Intellij IDEA CE(무료버전) 스프링부트(Java) 프로젝트 생성 [BY 정원] 2020.03.28 기준 모든 내용을 업데이트했습니다. 네이버 포스트 제 계정의 Spring Boot 시리... m.post.naver.com 1. In..

haningya.tistory.com

 

개발환경을 세팅했으면 무라도 베야지

json 으로 Hello world 프린트를 하려 한다.
삽질한 기록이다.

1장 JDK 삽질

EC2 에 올릴거였기 때문에 jdk를 바꿔야 했다. 원래는 jdk 1.8을 사용했는데 correttoo-11을 써야 했다.

 

오늘 내가 한 경험상 총 3개의 설정을 바꿔야 된다.

 

1. Preference --> Build, Execution, Deployment Gradle JVM --> Project SDK


2. File -->Project Structure --> Project SDK


3. build.gradle --> sourceCompatibility --> 11



2장 Lombok 삽질

[참고했던 레시피]

 

SpringBoot2로 Rest api 만들기(2) – HelloWorld

SpringBoot2 + gradle 프로젝트에 결과를 출력하기 위한 환경을 구성하고 Helloworld를 출력하기 위한 실습을 진행합니다. 과정은 Step by Step으로 이미지와 함께 진행되므로 초보자도 어렵지 않게 따라 할 수 있습니다.

daddyprogrammer.org

따라했는데 HelloController의 Getter와 Setter가 계속 오류가 났다.

 

물론 그게 lombok 라이브러리가 import 안되어서 그런건 알았지만 멍청한 나는

 

intellij에 플러그인 설치했다고 라이브러리가 추가된 줄 알았다.

(전에 했던 데모 프로젝트는 내가 만들 때 부터 추가를 해서 문제가 없었지만 이 프로젝트는 내가 판게 아니라 난 있다고 생각했는데 따쉬)


3장 starter-web

모든 코드상의 오류를 해결하고 localhost 에서 확인을 하려는데 자꾸 이게 뜬다.

지금은 잘되서 8090만 띄워놓았다.


2장과 마찬가지로 저번에 했던 데모 프로젝트에는 내가 프로젝트를 만들때 부터 추가했던 starter-web 때문이였다.

 

코드를 추가하고 Gradle을 다시 빌드했다.

    implementation 'org.springframework.boot:spring-boot-starter-web'

 

잘된다.

안녕 빌어먹을 세상아!!



4장 annotationProcessor

뭐가 문제일까


@GetMapping(value = "/helloworld/string")
    public String helloworldString() {
        return "helloworld";
    }

이 함수는 잘 불러져서 helloworld 가 출력이 됬는데

@GetMapping(value = "/helloworld/json")
    public Hello helloworldJson() {
        Hello hello = new Hello();
        hello.message = "helloworld";
        return hello;
    }

어허 json은 출력이 안되고 500 internal server error no converter....이런 에러가 있는 whiteLabel page가 나온다.

 

이와중에 알게된 사실

  • @RestController 라고 명시하면 ResponseBody 가 필요없다.
  • @Controller라고 하면 ResponseBody 필요하다.
  • 객체로 만들어서 return 할 경우 기본적으로 json형태인 key value쌍으로 만들어준다.

계속 찾다보니 문제는 json converter, GetterSetter 문제로 줄어들었다.

  1. lombok이 내 jdk를 지원하지 않는것인가. --> 지원하더라
  2. jackson이 없나? --> 있다
  3. Getter와 Setter 문제인데 lombok 은 문제없는데..?

그래서 고민하다가 내가 전에 실행했던 demo project 를 봤는데

    annotationProcessor 'org.projectlombok:lombok'
//힝 속았찡

추가하니까

 

잘된다.


번외 war 파일 생성


gradlew bootwar 안된다.

 

왜죠 

 

그럴땐 Gradle에서 bootWar 을 눌러주면 생성된다.

 

Gradle 에 이게 필요할 수도 있다.

    providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')

 



삽질은 너굴맨이 처치했으니 안심하라구

이제 요 war 를 ec2에 올려 배포하면 된다. 

 

짜릿해

728x90

댓글