스프링부터 구성요소 - 빌드도구 - 그래들 - 메이븐 - 스프링 프레임워크 - 스프링부트 (1.5, 2.0) 는 스프링 프레임워크 (4.x, 5.x) 를 기반으로 동작 - 스프링부트 - 스프링부터 스타터: 의존성을 관리 ================================================================================ 스프링 부터 어젠다 - Build - Coding - spring boot starter - Auto configuration - Programming in spring environment - Deploy ================================================================================ 자바 프로젝트는 패키명으로 기본 프로젝트를 구성한다 ================================================================================ 스프링의 컨테이너 디폴트: 톰캣 ================================================================================ Gradle: build.gradle 스크립트가 있다 ================================================================================ Maven 의 빌드스크립트: pom.xml ================================================================================ - 프로젝트의 기본 코드구조 - gradle 기반 프로젝트 모습 - (1): gradle 의 빌드스크립트 - (2): 수동으로 로컬에 설치할 필요 없이, 프로젝트에 내장시켜서 빌드하기위해 필요 - (3): 리눅스, 유닉스 계열에서 실행되는 스크립트 - (4): 윈도우에서 실행되는 배치파일 - (5): 프로젝트의 기본 구성을 정의하는 파일 - 메이븐에서 가지고 있는 기본 구조 src/main/java src/main/resources src/test/java - 빌드가 실행되서 컴파일 단계에서, src/main/java src/main/resources 이부분만 컴파일되고 패키징되고 배포된다 ================================================================================ - 스프링부트에서 빌드하면, 실행가능한 JAR, 실행가능한 WAR 가 생긴다 ================================================================================ - 실행가능한 JAR/실행가능한 WAR - springboot.war 와 임베디드 컨테이너 (내장 컨테이너, 톰캣) 을 묶어서 다시 패키징 (boot repacage) ================================================================================ - 고전적인 WAR (고전적인 배포형태) - 서버에 톰캣과 같은 WAS 설치 - WAS 의 특정 위치에, springboot.war 배포본을 업로드 - 톰캣이 springboot.war 파일을 읽어서 실행 ================================================================================ - 스프링부트는 애노테이션 기반 작동 - @ComponentScan - 앱의 컴포넌트 스캔을 어떤 범위로 하겠다고 지정 - @EnableAutoConfiguration - 자동구성 활성화 - @Configuration - 구성 bean 을 쓰겠다 - @ConditionalOn~~~ 어떤 조건이 됐을때, 활성화를 하겠다 ================================================================================ - SpringApplication.run - SpringApplication 클래스 실행 - SpringApplication 클래스 안에서 spring ioc 컨테이너 (스프링 bean) - 이 프레임워크에서 자기가 관리하는 객체 - SpringBootApplication 어노테이션이 붙은 위치를 기점으로 하향식으로 밑에 있는 패키지들을 탐색 ================================================================================ (Spring Boot) Starter - 의존성을 간결하게 함 - (Spring Boot) Starter 의 기본 동작 = spring-boot-autoconfigure 모듈 + spring-boot-dependencies 모듈 ================================================================================ 위의 코드 (${annotationApiVer} 같이 버전명시하는 부분도 있음) 가 아래처럼 간단하게 바뀐다 ================================================================================ ================================================================================ starter 들이 추가 되면, 자동구성 (auto-configuration) 이 활성되면서, 관례적인 bean 구성을 하게됨 ================================================================================ 스프링부트는 어플리케이션 속성을 외부에서 주입받아서, 어플리케이션이 동작할 때, 적용할 수 있음 1. 터미널에서 실행할 때, argument 2. 서버안에서 JSON 으로 선언한 구성파일 3. 운영체제의 환경변수 5. 속성파일들 ================================================================================ - ComponentScan 어노테이션을 통해, Repository, Component, Service, Controller, Configuration 어노테이션이 붙은 클래스들을 탐색함 - 그 클래스들안에서 어떻게 속성을 읽어들이고, 속성이 어떻게 구성되어있는지 확인 - 그 클래스들을 스프링 bean 으로 등록함 - 등록된 스프링 bean 들은 ApplicationContext 가 가지게 됨 ================================================================================ DI, IoC, Autowired 어노테이션 ================================================================================ ================================================================================ 스프링 부트는 스프링 프레임워크 어플리케이션을 개발하기위해 사용되는 개발 플랫폼 ================================================================================