#2 스프링부트 환경 설정
이 글은 교재 보면서 따라하다가 망한 글입니다
04 스프링부트 애플리케이션 개발하기
4.1 프로젝트 생성
두 가지 방법이 있다.
1) 인텔리제이 IDEA 에서 프로젝트를 생성하는 방법 - 얼티밋 버전(커뮤니티 버전은 불가)
2) Spring Initializr 를 이용해 생성하는 방법 https://start.spring.io/ (스프링 공식 사이트에서 제공)
난 커뮤니티 버전이라서 2번 방법을 사용해야 한다.
1번 방법에서 설정할 수 있는 항목들
- Name : 프로젝트 이름
- Location : 프로젝트를 생성할 위치
- Language : JVM 상에서 동작하는 언어 (JAVA, Kotlin, Groovy)
- Type : 빌드 툴 (Maven 또는 Gradle)
- Group : 프로젝트를 정의하는 고유한 식별자 정보 (기업명이나 단체명을 쓰면 되는 듯하다)
- Artifact : 세부 프로젝트를 식별하는 정보
- Package name : Group 과 Artifact 를 설정하면 자동으로 입력됨 (Group.Arifact 이런 식으로 지정됨)
- Project SDK : 11버전으로 설정
- Java : 11버전
- Packaging : 애플리케이션 배포를 쉽게 하는 패키징 옵션 (Jar 또는 War)
2번도 설정 항목들은 같은데, 항목명이 살짝은 다름
Dependencies 항목에서 의존성 추가를 할 수 있다!
4.2 pom.xml(Project Object Model) 살펴보기
이 부분은 그냥 훑고 넘어가기
4.2.1 빌드 관리 도구
JVM(자바 가상머신)이나 WAS(웹 애플리케이션 서버)가 프로젝트를 인식하고 실행할 수 있게 우리가 작성한 소스코드와 프로젝트에 사용된 파일들(.xml, .jar, .properties)을 빌드하는 도구
4.2.2. 메이븐
- 프로젝트 관리 : 프로젝트 버전과 아티팩트를 관리
- 빌드 및 패키징 : 의존성 관리, 설정된 패키지 형식(jar 또는 war)으로 빌드를 수행
- 테스트 : 빌드 수행 전에 작성된 코드의 정상 동작 여부를 확인
- 배포 : 빌드가 완료된 패키지를 원격 저장소에 배포 (git으로 올릴 수 있게 해주는 건가?)
메이븐의 생명주기
기본 생명주기, 클린 생명주기, 사이트 생명주기 3가지로 구분한다.
최근에는 Gradle 이라는 빌드 도구로 전환되는 추세이다.
아 근데 이 책이 지금 Maven 으로 설명해서 내가 배운 거랑 너무 달라 나는 Gradle 할 거임.... 수업 때 그거 써서 그게 익숙해ㅜ
이제부터 점프 투 스프링부트 로 공부할게여
4.3 Hello World 출력하기
1-05 스프링부트 도구 설치하기
* `[완성 소스]` : [https://github.com/pahkey/sbb3/tree/1-05](https://github.com/pahkey/sbb3/tree/1-05) …
wikidocs.net
이제부터 이거 보면서 진행할게요
@RequiredArgsConstructor 사용
Lombok
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
@RequiredArgsConstructor
//애너테이션을 통한 의존성 주입(DI)
// 스프링이 대신 객체 생성(생성자를 작성하지 않아도 됨)
@Getter
//@Setter
public class HelloLombok {
//final 은 Setter 메서드를 사용할 수 없으므로
//@Setter 는 의미가 없음
private final String hello;
private final int lombok;
public static void main(String[] args) {
HelloLombok helloLombok = new HelloLombok("헬로",5);
/* @RequiredArgsConstructor 을 통해 생성자를 작성하지 않고 객체 생성
helloLombok.setHello("헬로");
helloLombok.setLombok(5);*/
System.out.println(helloLombok.getHello());
System.out.println(helloLombok.getLombok());
}
}
hello, lombok 속성에 final을 적용하고 롬복의 @RequiredArgsConstructor 애너테이션을 적용하면 해당 속성을 필요로하는 생성자가 롬복에 의해 자동으로 생성된다. (※ final이 없는 속성은 생성자에 포함되지 않는다.)
final을 적용했기 때문에 @Setter는 의미가 없으며 Setter 메서드들도 사용할수 없다. final은 한번 설정한 값을 변경할수 없게 하는 키워드이다.
즉, 다음과 같이 생성자를 직접 작성한 경우와 동일하다.
public HelloLombok(String hello, int lombok) { this.hello = hello; this.lombok = lombok; }
@RequiredArgsConstructor 애너테이션은 이후 진행되는 챕터에서 의존성 주입(Dependency Injection)시 사용된다.
DI(Dependency Injection) - 스프링이 객체를 대신 생성하여 주입한다.
앞에 배웠던 거 나오니까 이제 뭔 소린지 알겠어서 뿌듯하구만
컨트롤러
@Controller 꼭 붙여야 컨트롤러로 인식함
@Controller
public class HelloController {
@GetMapping("/sbb")
@ResponseBody
public String hello() {
return "안녕하세요 sbb에 오신 것을 환영합니다.";
}
}
다음글은 데이터베이스 설치하고 사용해보기 입니다