메이븐을 이용해 프로젝트를 만듦
- 이클립스를 이용해 프로젝트를 만드는 것과 달리 id?가 고정되어 있지 않음
-> 그래서 Depency를 관리하기가 편하다.
//
sts 다운받은거
- 압축 풀어서 실행
ststworkspace 폴더 만들기
실행.
이클립스랑 동일하게 생기게 뜸.
//
그리고 어제 만든 mavenworkspace에다가 가지고 오기
파일 > import > maven > exising > browse에서 prj에서 한 번 더 나아가서 선택
- 아래 POM 나와야 정상
- maven프로젝트를 '참고'만 한 것
그래서 stsworkspace 폴더에는 뭐 새로운게 생기지 않음
* import 할 때 'add' 체크를 하지 않음 : add를 해야 가지고 오는 것
cf) git 관리할 때는 workspace 단위가 아니라 프로젝트 단위 or 소스파일과 관련되어? 하기
- metadata가 같이 들어가기에 workspace 전체를 굳이 다 올릴 필요가 없다. (metadata 안에 있는 것들은 임시 파일들)
- 프로젝트 안에 소스코드가 다 있기에 이것만 깃 관리로 하면 된다~~
//
패키지 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 가자
> 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)
72일 - cookie (서블릿에서 vs Spring에서), 생명주기 영역, 가시 영역 (2) | 2021.06.02 |
---|---|
Spring을 통해서 도대체 뭐가 편리해진걸까 (업데이트 ing) (0) | 2021.06.02 |
72일 - ★스프링이란 (=프론트 컨트롤러=Spring MVC 라이브러리= Dispatcher Servlet), devtool 라이브러리 추가하기, @GetMapping, @PostMapping (0) | 2021.06.02 |
71일 - 메이븐 vs 스프링 vs 스프링부트, @restController vs @Controller (1) | 2021.06.01 |
70일 - Spring 첫 시작. maven 프로젝트 빌드업 (0) | 2021.05.31 |