CheerUp_Cheers

스프링 부트2 - (2) 스프링 부트 환경 설정 본문

서적 공부/스프링부트 - 처음 배우는 스프링부트2

스프링 부트2 - (2) 스프링 부트 환경 설정

meorimori 2020. 7. 9. 01:38

#JDK 설치하기

1) 설치 경로

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

 

#인젤리제이 IDEA 사용하기

[1] 장점

 - 문법이 옳은 것인지

 - 중복된 코드인지

 - 사용하지 않는 변수인지

 - 더나은 문법이나 람다식으로 변환 제안.

 - 깃허브와 연동되며 디버거와 기타 플러그인 등 여러 편리한 기능을 지원.

 

#프로젝트 생성

1) 링크 접속

https://start.spring.io/

2) 접속후 설정.

다음과 같이 설정

 

#Hello World 띄우기

@RestController
@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

	@GetMapping
	public String HelloWorld(){
		return "Hello World";
	}
}

1) @RestController

  @Controller와 @ResponseBody를 합쳐 놓은 역할 수행.

  이 어노테이션을 사용하면 반환값이 Response Body부분에 자동으로 바인딩

  스프링 RestFul 웹 서비스를 만들때 주로 사용.

2) @GetMapping

  Get방식으로 경로를 받는 매핑 어노테이션.

  value값을 별도로 지정하지 않으면 빈값("")값으로 들어감.

 

#스프링 이니셜라이저에 접속 안하고 생성

1) New Project

2) Spring Initialize

3) Next후, 설정

4) Next후, 의존성 선택.

5) 프로젝트명 설정 후, 생성.

 

#그레이들 설치 및 빌드하기

메이븐 기반인 pom.xml은 XML기반으로 작성되어 동적인 것에 제약.

-> 대안으로 그루비 기반의 그레이들 주목.

 

#그레이들 멀티 프로젝트 구성하기

여러 프로젝트를 하나의 프로젝트 처럼 사용 가능.

공통 코드를 하나의 프로젝트로 분리하고, 재사용할때 유리.

 

[1] 장점

 - 중복 코드를 제거.

 - 도메인에 컬럼이 추가되거나 변경시, 일일이 수정안해도됨.

 

#환경 프로퍼티 파일 설정하기

[1] propertise

설정 관련 및 기타 정적인 값을 키값 형식으로 관리.

이 파일 사용하면 기존 스프링의 복잡한 XML파일을 하나로 설정가능.

application.propertise의 server.port값을 80으로 변경 가능.

 

[2] yml

기존에는 프로퍼티를 사용했지만, 표현의 한계로 YAML파일을 사용.

.yml확장자를 사용.

yaml은 마크업 언어가 아니고, 데이터 중심을 둔다.

 

#프로파일에 따른 환경 구성 분리

공부 목적으로 로컬에서만 한다면 프로파일의 프로퍼티 나눌 필요 없음.

실제 서비스에서 개발한다면 로컬DB, 개발DB, 운영 DB의 설정값이 모두 다름.

 -> 프로파일에 따라 다르게 설정해야 함.

'---'을 기준으로 설정값을 나눔.

server:
  port: 80 //디폴트
---
spring:
  profiles: local
server:
  port: 8080
---
spring:
  profiles: dev
server:
  port: 8081
---
spring:
  profiles: real
server:
  port: 8082

 

1) 프로파일로 실행하기

 - Edit Configuration

 - Run/Debug Configurations

 - 프로파일 값 할당

 

#YAML 파일 매핑하기

YAML 파일은 사용하면 깊이에 따라 관계를 구분 짓음(LIST, SET, MAP)등 다양한 바인딩형 매핑 간편.

 

[1] 다음은 YAML파일의 데이터를 가져오는 어노테이션.

1) @Value

유연한 바인딩 x

메타데이터 지원 x

SqEL 평가 O

 

2) @ConfigurationProperties

유연한 바인딩 O

메타데이터 지원 O

SqEL 평가 x

 

[2] 설명

 - 유연한 바인딩

 필드를 낙타표기법으로 선언, 프로퍼티는 다양한 형식으로 선언하여 바인딩

 - 메타데이터 지원

 프로퍼티의 키에 대한 정보를 메타데이터파일(JSON)으로 제공

 - SqEL(Spring Expression Languate, 스프링 표현 언) 평가

 런타엠 객체 참조에 대해 질의하고 조작하는 기능을 지원하는 언어.

 특히 메서드 호출 및 기본 문자열 템플릿 기능을 제공.

 

#자동 환경 설정 이해하기

Web, H2(h2 메모리 DB), JDBC를 비롯해 100여개 자동설정 제공

 

[1] 설정법

 - @EnableAutoConfiguration

 - @SpringBootApplication

  자동설정 뿐만아니라, 부트실행에 있어서 필수

  @SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan