공부하자/Spring🍃
[SpringBoot] spring boot 설치 및 구조, 프로젝트 설정, @어노테이션 (7/13)
snbrin
2022. 7. 13. 14:54
07/13 수 수업 메모
오늘 할 일
- Spring Boot 4.13.1버전 설치
- sts version 3.9.13(지금까지 쓰던 spring)
- spring legacy project -MVC로 프로젝트 생성
- 빌드도구 maven - jar파일을 자동으로 주입하는 역할
- sts version 4
- 4버전은 빌드도구가 gradle임
- 안드로이드 스튜디오의 빌드 도구도 gradle
- sts version 3.9.13(지금까지 쓰던 spring)
Boot 프로젝트 만들기
- 패키징은 프로젝트 완성 후 파일 전체를 '어떤 형식으로 압축할 것인가'
- packaging이 jar인 경우
- 실행할 때 파일명.jar
- 톰캣 서버와 소스가 같이 압축되어 있음
- packaging이 war인 경우
- 서버를 내장해서 압축한 것이 아닌 서버를 제외하고 코드만 압축되어 있음
- 실행할 때 프로젝트를 서버에 올리고, 서버를 켜고, 실행시키는 방식
- 지금까지 했던 방식
- @Controller - 서블릿 역할을 하는 클래스로 만듦
- <bean> 에 자동 등록됨
- 스프링의 컨테이너를 사용하려면 bean에 등록되어야 하기때문에
- 그래서 원래는 <bean> 태그로 등록을 했었는데
- @Controller를 사용하면 태그 사용하지 않고 등록됨
- @RequestMapping(value="/hello") or ("/hello") -> 'value=' 생략
- web 구조에서 클라이언트가 요청하는 주소를 지정함
- @ResponseBody
- 메소드의 리턴값을 리턴타입으로 서버의 응답으로 삼겠다는 의미
- @RequiredArgsConstructor
- lombok 어노테이션
- 명시적 생성자를 자동으로 만들어줌
- 단, 필드는 final 필드여야 함
서버 자동 재실행 설정하기
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools/2.7.1
gradle 선택 - 코드 복사
- Live Reload 설정
- 크롬 브라우저에서 자동으로 리로드 해주는 역할
- 브라우저를 refresh하는 도구
- 크롬 웹스토어에서 '크롬에 추가하기'
- Lombok 설치
- VO에서 생성자, setter,getter 만들었던 작업을 자동으로 해주는 역할
- 필드만 만들어두면 자동으로 만들어줌
- springboot 밖에서 세팅해야함! boot에서만 쓰는 게 아니라서, 별도의 프레임워크임!
- 순서
- lombok 사이트에서 lombok.jar 파일 다운로드
- lombok 설치
- lombok에 적용할 sts 툴 선택
- 스프링 부트에서 DI 하기
- https://projectlombok.org/download
- 다운로드 후 cmd에서 설치
- 다운받은 폴더가 있는 경로로 이동
- java -jar lombok.jar
compileOnly - 컴파일 단계에서 필요한 jar파일
Spring Boot 구조 파악하기
- src/main/java
- 자바파일을 쓰는 곳
- Controller, Service, Dao, Vo(Dto)
- Controller -> Service -> Dao -> Vo -> (Dto) 순서로 보냄
- 비즈니스(Controller) 로직 파일
- 엔티티(Vo(Dto)), 서비스(Service) 파일
- 데이터베이스 연결(Dao) 파일
- ~Application.java
- 스프링 부트의 모든 설정이 관리되는 시작 파일
- main
- @SpringBootApplication은 프로젝트 시작 클래스를 지정함
- src/main/resources
- 자바를 제외한 파일(html,css,js 환경 파일 등) 저장
- 주로 이용하는 폴더명
- templates
- 템플릿 파일을 저장하는 곳
- html파일 형태로 자바 객체와 연동되는 파일 등(xml, properties 등)
- static
- style sheet(.css), javascript, image파일 등을 저장하는 곳
- application.properties 파일
- 프로젝트의 환경 설정 파일
- 환경설정 해주는 파일의 확장자 : properties, yaml(yml)
- templates
- src/test/java
- src/main/java에 기능을 넣기 전에 부분적으로 테스트가 필요할 때 사용됨
- Junit와 spring boot의 테스팅 도구를 사용하여 서버를 실행하지 않고 부분적으로 테스트 할 수 있는 곳
- Junit은 테스트를 도와주는 프레임워크
- build.gradle 파일
- 빌드 도구인 gradle의 환경설정을 위한 파일
- gradle은 그루비(?)를 기반으로 한 빌드 도구(Ant, Maven과 같은 이전시대의 빌드 도구의 단점을 보완하고 장점을 취합하여 만든 것)