상세 컨텐츠

본문 제목

71일 - Boot 프로젝트 만들기, @Controller 통해 출력해보기 (feat. sts에 maven 프로젝트 실행)

수업 일지/Spring

by NayC 2021. 6. 1. 10:40

본문

728x90

메이븐을 이용해 프로젝트를 만듦

- 이클립스를 이용해 프로젝트를 만드는 것과 달리 id?가 고정되어 있지 않음

-> 그래서 Depency를 관리하기가 편하다. 

 

// 

 

sts 다운받은거

- 압축 풀어서 실행

 

ststworkspace 폴더 만들기

 

실행.

이클립스랑 동일하게 생기게 뜸. 

 

// 

 

그리고 어제 만든 mavenworkspace에다가 가지고 오기

 

파일 > import > maven > exising > browse에서 prj에서 한 번 더 나아가서 선택 

- 아래 POM 나와야 정상

- maven프로젝트를 '참고'만 한 것

  그래서 stsworkspace 폴더에는 뭐 새로운게 생기지 않음

* import 할 때 'add' 체크를 하지 않음 : add를 해야 가지고 오는 것

 

cf) git 관리할 때는 workspace 단위가 아니라 프로젝트 단위 or 소스파일과 관련되어? 하기

- metadata가 같이 들어가기에 workspace 전체를 굳이 다 올릴 필요가 없다. (metadata 안에 있는 것들은 임시 파일들) 

- 프로젝트 안에 소스코드가 다 있기에 이것만 깃 관리로 하면 된다~~ 

 

혹시 git 잘못 올렸으면 이렇게 

 

//

 

패키지 com.newlecture 안의 app 열기

-> 어제 maven 만 쓸 때는 편집도 안되고 실행할 때 cmd 썼는데 이제는 편집도, 실행도 이클립스로 매우 편하게 할 수 있게 된 것.

 

// 

 

java로 한건지 maven으로 한 건지 구분이 안간다. 

그래서 프로젝트를 만들 때  > mavenproject로 만들 수 있음

- 정-말 좋은 점은 tool은 바꿔쓸 수 있다는 점.

  더 좋은 점은 끝도 없다.

 

pom 파일을 열어보자.

6번째줄 packaging

- 내가 만든 프로젝트 성질을 말함

- 난 지금 성질을 jar로 한 것 = 자바 프로젝트가 되는 것

-> 만약 다른 거로 바꾸려면 war로 바꾸면 ? 프로젝트가 되는 것

그리고 이렇게 update만 해주면,

막 뭐가 스스로 다운됨

 

war로 해보기 (실습) 

-> 프로젝트 > 우클릭 > maven > update project 하면

    뭔가 에러가 나는게 정상이라고 함 (6번째줄에 x 표시)

 

구조가 살짝 바뀜

web.app에 web.xml을 넣으라는 것

-> tool > 아파치 9.0 > wepapps > ROOT > web-inf 폴더 복사해서 

지금 이클립스에 넣기 

 

-> 그럼 오류 메시지 사라짐

몇 개만 수정하면 너무 손쉽게 바뀜! 

 

실습해야함

* web.xml에서 웰컴 페이지 말고 위에 예전에 NANA 만들었던거 삭제해야함! (지금 그 클래스 없는거니까 여기에는 안 지우면 오류남)

 

우클릭 > new > other

 

 

선택 > run > 

window > server > runtime 환경 설정

.

.

 


// 만들고자 하는건 '스프링 프로젝트' 

fine > new > spring starter progect

maven 기반으로 하되 starter 라이브러리 쉽게 추가하도록 한 것

- 스프링 라이브러리 쉽게 추가할 수 있도록 wizard가 뜸 

- 이건 뭐로 할 건지 저건 뭐로 할 건지...

 

설정을 바꿔줬음

- 자바 버전은 8로 해주는게 좋다.

 

버전을 잘 맞춰야.... 

라이브러리 설정하다가 시간 다 감...

자꾸 라이브러리 과거 버전만 쓰게 됨...

-> 라이브러리를 챙기는 불편함을 없애줌. Starter ! 

   

우선 이거 하나만 추가하자

 

그럼 아래 부지런히 import 실행함 (구조를 만드는 것)

//

 

부트와 스프링 간의 관계 

spring.io 가자

https://spring.io/

> project 가면 되게 많은 프로젝트들이 있음

 

Spring Framework

핵심기능 1) DI 

  A와 B 객체를 결합할 때 setter, 생성자로 결합을 하든... 직접 우리가 하는게 아니라 '설정'으로 결합하게 해주는 것

핵심기능 2) Transaction 관리

 

- 버전이 올라가면서 스트러치? 

  그리고 jdbc할 때도 '내거 써!' 이러면서 점점 비대해짐

- 스프링 하나 쓰는데 라이브러리가 많아지며 복잡해짐

-> 재정비를 한게 Spring Boot

 

해결한 것 

1) 톰캣 위에 얹은 게 뚱뚱했던 Spring 

- 톰캣을 경량화 or 톰캣을 쓰지 않고도 실행되게끔. 

2) 라이브러리 설정 방법이 힘들었음. maven이나 gradle 도움 받아서 설정 쉽게

3) 프로젝트 실행할 때 카테고리화해서 제공. Boot라는 이름으로. (starter 해서 묶어서 제공해서 손쉽게)

 

- 톰캣 안 써도 됨. java 프로젝트처럼 실행해도 됨. 

- wizard 제공해서 손쉽게 시작 

- 라이브러리는 starter 해서 카테고리화해서 제공

 

//

 

Spring Boot를 사용하는게 당연한 것.

- 만약 Boot를 안 쓰는 사람은 Boot를 모르는 사람일 것

 

라이브러리 포함할 때도

- 우리는 라이브러리 패키지 하나!만 선택해서 포함시킨 것

  이게 아니었으면 maven 설정해서는 하나하나씩 추가해야했을 것 (Thank you Boot...)

 

Q. 과거의 방식을 알아야 하는가? 

- 그럴 필요 없다. 옛날 프로젝트 참여하는 일이 아니고서는...

 

ex) Boot 曰 "톰캣 runtime 설정하고... 뭐하고... 이런 것들 신경쓰지마! 내가 책임질게!" 

 

내가 책임진다.  알아서 해줄게.

 

이럴 필요가 없는 것

Boot로 하는게 당연히 바람직하다.

//

 

어떻게 간단해졌는지 알아보자.

 

만들어준! Bootprj로 들어와서 봐야한다는거 ~~ ! 

 

runtime 설정을 안해줬는데도 tomcat 실행이 되다니! 

 

cf) Spring은 다 설정해줘야하는 것. SpringBoot가 설정 안해줘도 되는 것

 

HomeController라는 것을 만들고

우선 뭔지는 모르겠지만 써보자! 

 

12번째줄. adsfsadf 부분은 내 마음대로 써주는 것

 

p.s @어노테이션 부분은 직접 치지 말고 @Re 정도까지만 적고 컨트롤+스페이스 눌러서 저절로 띄워서 하기! 

 

cf) 라이브러리 지우고 다시 깔 때 

c 드라이브 > 사용자 > m2 (라이브러리 다운 받은 메이븐 저장소가 있음) 이걸 지우고 > 

뭔가 라이브러리 추가할 때는 이렇게 들어가서 wizard 띄우면 된다. (매우 comfortable !!)

-> 그리고 다시 maven > update 해주면 된당 ~~ 

 

// 

 

자 다시 HomeController 와서

이게 나오면 정상

서버가 연결 안되어 있었으면 404라는 오류도 안나왔음

- 우리는 서버 연결해준 적이 없는데 말이지! Boot... ♡

 

나 오류났던 이유 

- 나는 패키지명을 하나를 com.newlec으로 했었음... 

-> 이렇게 패키지명이 다르면 읽을 수가 없다고 함. 꼭 동일하하게 하고 > 그 하위 항목을 늘려나가는 방식으로! 

 

초반에! 패키지명 정할 때 정한거를 바꾸기가 쉽지 않으니 나는 이렇게 그냥 가기로 했음.

잘 설정해주기!! 

 

그리고 실행할 때 Controller가 아니라! main 함수가 있는 곳에서 해주기

그리고 재시작해야 (빨간 네모 버튼)

 

지금은 자바 프로젝트인 것.

 

//

@RequestMapping("/aaa")

- 이걸 찾기 위해 다 뒤질 것

 

어디서 찾으라고 할 수 있음 

@Controller -> @ResponseBody 써야

@RestController  -> 위에거 필요없음

 

7) 이 안에 url 있어요~

10) 것봐요 있죠? 

12) 실행해주세요 ~ 

 

+ 그리고 여기에 함수 막 추가 가능

 

//

 

 

*실행법*

main 함수 

부트 선택 > run as

 

왼쪽에 bootPrj 대시보드 이용

- 이 뜻이 : SpringBoot의 main 함수를 실행시키겠다는 것

 

-> localhost.../aaa 쳐보면 나옴! 

- 이전에는 doGet, 이런거 오버라이드 했어야 하는데...!! 

   이제는 설정만 하면 됨! 

 

cf) 내가 헷갈렸던 부분. 이전에 서블릿에서는 Controller에서 실행을 해줬었는데 왜 지금은 main 함수에서 실행을 하지? 

-> 이전에서도 java 파일이니까 main함수를 실행시키는게 맞았는데, 톰캣 안에? main 함수 (기능을) 포함하는게 있어서 서버를 실행시켜주는 것으로 실행한 것

-> 여기서는! 톰캣을 이용하지 않으니? main 함수에서 실행을 하는 것

cf) Controller에서 실행을 시켜줘도 되긴 되나... (실행이 됨) - 이건 main 함수 찾아서 올라가기 때문에? 실행되는 거고, 원래는! '이 프로젝트의 main 함수'에서 실행시켜주는게 맞으니 main 함수에서 실행을 시켜주는거롯! 


클래스 마음대로 추가하고, 출력해보기 

-> 이후 시간에 정리하는 방법을 알려줄 것

 

 

 

 

 

 

 

 

cf)

https://goddaehee.tistory.com/199

728x90
반응형

관련글 더보기