SpringBoot 프로젝트 환경설정
- https://start.spring.io/
- 스프링 부트 기반으로 스프링 프로젝트를 만들어주는 사이트
- 빌드 도구 : 필요한 라이브러리를 가져오고 Build하는 라이프 사이클까지 관리해주는 툴
- 소스코드를 애플리케이션으로 만드는 일련의 작업들을 자동화하여 실행 가능한 애플리케이션으로 만들어준다.
- 라이브러리의 의존 관계를 관리해준다.
- 하나의 라이브러리를 추가하면 해당 라이브러리와 관련되서 필요한(의존 관계에 있는) 라이브러리들을 모두 추가해준다.
- 대부분 Maven보다 Gradle을 많이 쓰는 추세이다.
- 빌드 도구의 종류
- Maven
- Apache 기반
- 자바용 프로젝트 관리 도구
- XML을 이용한 빌드 시스템
- Gradle
- 오픈 소스 기반의 빌드 자동화 시스템
- JVM, Android OS 기반의 빌드 도구
- Maven을 사용할 수 있는 변환 기능 컨벤션 프레임워크
- Groovy, Kotlin 문법 사용
- Maven
- Spring Boot 버전
- SNAPSHOT : 아직 만들고 있는 버전
- M1 : 아직 정식으로 릴리즈 되지 않은 버전
- 스프링 부트 버전을 선택할 시 정식 버전 중 높은 버전을 선택하는 것이 좋다.
- 스프링 부트 3.0 이상 버전을 사용하는 경우 Java 17 이상을 사용해야 한다.
- Project MetaData
- Group : 프로젝트를 정의하고 구분하게 해주는 고유 식별자 정보로 보통 기업 도메인명을 적는다.
- Artifact : 빌드되어 나오는 결과물로 프로젝트의 이름이라고 생각하면 된다.
- Name : Artifact명을 따라간다.
- Description : 프로젝트 설명을 적는다.
- Package : 프로젝트의 루트 패키지를 지정한다. (지정하지 않으면 Groupt 속성 값이 적용된다.)
- Dependancies : 프로젝트에 필요한 라이브러리를 선택할 수 있다.
- Spring Boot 프로젝트 생성 후 프로젝트 내의 build.gradle 파일을 통해 프로젝트를 열어준다.
- 프로젝트 구조
- main
- java - 실제 자바 코드 파일들이 저장되는 공간
- resources - 실제 자바 코드 파일을 제외한 XML, properties 설정 파일같은 것들이 저장되는 공간
- test - 테스트 코드들을 저장되는 공간
- build.gradle - 프로젝트 단위에서 필요한 작업, 빌드를 수행하기 위한 모든 메소드와 속성들을 정의하는 파일.
- plugins - spring boot 버전, 언어 등이 포함되어 있다.
- repositories - 라이브러리들을 설치하는 사이트를 명시해놓은 것.
- dependencies - 프로젝트에 필요한 라이브러리들이 명시해놓은 것.
- main
@SpringBootApplication
public class HelloSpringApplication {
public static void main(String[] args) {
SpringApplication.run(HelloSpringApplication.class, args);
}
}
- 스프링 부트도 마찬가지로 main() 메소드에서 실행된다.
- SpringApplication.run() 메소드로 스프링 부투를 실행한다.
- @SpringBootApplication 어노테이션도 필요하다.
- 내부에 있는 톰켓 웹 서버를 통해 자체적으로 띄우면서 스프링 부트도 같이 실행된다.
- 주로 사용하는 라이브러리
- 로깅
- logback
- slf4j
- 테스트
- junit - 테스트 프레임워크
- mockito - 목 라이브러리
- assertj - 테스트 코드 작성을 편하게 도와주는 라이브러리
- 로깅
View 환경설정
- 스프링 부트가 제공하는 Welcome Page 기능
- resources/static/index.html 파일을 Welcome Page로 사용한다.
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello";
}
}
- Controller를 사용할 때는 @Controller 어노테이션으로 명시해줘야한다.
- @GetMapping()은 http에서의 Get 방식(HTTP URL을 작성하고 엔터치는 방식)을 의미한다.
- 기본 URL에 hello 추가되면 위 예제의 hello() 메소드가 실행되는 것이다.
- Model은 Spring에서 만들어서 넣어주는 것으로 값을 넣어줄 수 있다.
- return "hello"에서 뷰 리졸버(view Resolver)가 return한 내용과 동일한 html 파일을 찾는다
- resources/templates/hello.html 파일을 찾고 있다면 그 화면을 렌더링한다(띄운다)
- 동작 흐름
- 웹에서 hello를 Get 방식으로 보냄.
- 톰켓 서버에서 내용을 받아서 Spring에게 전달한다.
- Spring에서 Controller를 호출해서 Get 방식의 hello가 있는지 찾는다.
- 있다면 그 메소드를 실행한다.
- 전달할 내용을 전달한다.
- ViewResolver가 return과 동일한 내용의 파일을 resources/templates/ 에서 View 파일을 찾는다.
- 찾은 View 파일을 렌더링해서 화면에 보여준다.
- spring-boot-devtools 라이브러리를 추가하면 html 파일을 컴파일만 해주면 서버 재시작 없이 View 파일 변경이 가능하다.
- 스프링 부트 빌드하고 실행하기
- 프로젝트 디렉토리로 이동
- ./gradlew build
- 윈도우라면 gradlew.bat 실행
- build/libs 디렉토리로 이동
- java -jar 파일명.jar 실행
출처: [인프런 김영한 스프링 입문]
[지금 무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의 | 김영한 - 인프
김영한 | 스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확
www.inflearn.com
'Spring > [인프런 김영한 스프링 입문]' 카테고리의 다른 글
[인프런 김영한 스프링 입문] 스프링 DB 접근 기술 (0) | 2024.08.09 |
---|---|
[인프런 김영한 스프링 입문] 회원 관리 예제 - 웹 MVC 개발 (1) | 2024.08.09 |
[인프런 김영한 스프링 입문] 스프링 빈과 의존관계 (0) | 2024.08.09 |
[인프런 김영한 스프링 입문] 회원 관리 예제 - 백엔드 개발 (0) | 2024.08.09 |
[인프런 김영한 스프링 입문] 스프링 웹 개발 기초 (0) | 2024.08.08 |