한둥둥 2022. 9. 15. 18:02

gradle이나 앞전에 말한 maven같은 프로젝트들은 의존 관계를 관리 해준다. 

plugins {
	id 'org.springframework.boot' version '2.7.3'
	id 'io.spring.dependency-management' version '1.0.13.RELEASE'
	id 'java'
}

group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
	useJUnitPlatform()
}

여기 보이는 dependencies에서 spring-boot-starter-web을 추가한 후에 돌려주면 

starter-web라이브러리를 dependencies에 추가해서 가져오면 starter-web에 필요한 라이브러리들을 다 가져온다. 

같이 추가 되어진 애들을 말하자면 의존 관계가  필요한 것들이다. 

우리는 web만 필요하지만 web이 필요한 것을 우리는 의존을 하고 있는 것이다. 

그러면 gradle이 이를 다 가져와준다.

이 부분을 눌르면 무언가가 바뀜 gradle뜸 이후에 gradle을 누르면 아래의 이미지처럼 나온다.

라이브러리간의 의존 관계이다. 

각각을 펼치면 그에 해당하는 라이브러리가 필요한 것들이 밑에 있음. 

spring-boot-starter-tomcat이 spring-boot-starter-web 안에 들어 있음. 

이전에 프로그래밍 고대 개발자들은 웹 서버라는 것을 서버에 직접 설치하였다. 

톰캣 같은 것들은 그 후에 자바 코드들을 집어넣는 형식으로 했다. 

요즘에는 소스 라이브러리에서 웹 서버를 들고 있다. 이런 것을 임베디드(내장)하고 있다고 한다.

자바 메인 메서드만 실행해도 웹서버가 뜬다. 요즘에는 개발을 이런 방식으로 한다. 

걍 라이브러리만 깔고 웹 서버가 내장되어 있어서 웹이 실행되는 것이다. 

예전처럼 톰캣 서버를 까는 짓을 하지 않음. 

Spring-boot 라이브러리를 쓰면 spring-core까지 다 가져온다. 

 

현업에서는 System.out.println으로 출력을 하면 안된다. 현업에서는 log라는 것으로 이걸 남겨주어야 한다. 

log로 넘겨야 심각한 에러들을 모아 볼 수 있거나 할 수 있다. .log파일들이 관리가 된다. 

그런데 취업 준비생이나 경험을 안한 나 같은 사람들은 로그를 왜쓰지라는 생각이 들 수 있음. 

하지만 실무에서는 로깅을 많이 써야함 

로깅이 있는데 slf4j , logback라는게 있다. 요즘에는 slf4j는 한마디로 말해서 인터페이스이다. 

log를 어떤 구현체로 출력할까이다.  

요즘 트랜드는 logback이다. logback은 실제 로딩 속도도 빠르고 여러가지 지원하는 기능도 좋아 어떤 구현체로 출력할지를 logback으로 자주 결정한다.  -> 그냥 spring-boot-starter를 떙기면 logback과 slf4j 두가지가 땡겨짐 

 

두가지가 궁금하면 이 키워드로 검색하자 

테스트할 때 대부분 java 진영에서는 JUnit이라는 것을 쓴다. 그래서 스프링에서도 기본적으로 추가해서 제공해준다. 

 

spring-test : 스프링을 통합 테스트 

 

스프링 부트 라이브러리 

spring-boot-starter-web spring-boot-starter-tomcat: 톰캣(웹서버) 

spring-webmvc : 스프링 웹 MVC 

spring-boot-starter-thymeleaf : 타임리프 템플릿 엔진(View) 

spring-boot-starter(공통) : 스프링 + 스프링코어 + 로깅

spring-boot spring-core 

spring-boot-starter-logging logback, slf4j 

테스트 라이브러리 

spring-boot-starter-testjunit : 테스트 프레임워크 mockito : 목라이브러리

assertj : 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리 

spring-test : 스프링 통합 테스트 지원