Spring의 생태계는 거대함. Spring FrameWork, Data, Security 등등....
Spirng Boot 또한 Spring Framework와 함께 Spirng 생태계를 구성하는 하나의 프로젝트
이러한 프로젝트들은 하위 프로젝트(모듈)을 가지고 있음
Spring 프로젝트들은 모두 Spring Framework 기반으로 동작함. Spring Data JDBC, Spring Data JPA 등을 이용할 때 Framework 위에서 동작, Spring Framework가 가장 핵심.
Spirng Framework 정의: Spirng은 어떤 종류의 배포 플랫폼에서도 최신 "자바 기반" 기업용 어플리케이션을 위한 종합적인 프로그래밍 및 구성 모델을 제공해준다. Spring의 핵심 요소는 어플리케이션 수준에서의 인프라 지원이다. Spring은 기업용 어플리케이션의 plumbing에 초점을 맞춰 팀이 특정 배포 환경과 불필요한 시도 없이 어플리케이션 수준의 "비즈니스 로직에 집중" 할 수 있게 해준다.
즉, 객체지향이 가진 특징을 잘 활용할 수 있게 해주면서, 다른 부분 신경쓰지 않고 비즈니스 로직에만 집중할 수 있게 해주는 프레임워크
초기 Spring 기본 설정만 잘 해놓는다면, 스프링 관련 코드를 신경 쓸 일이 거의 없다.
DI와 IoC를 이용해 다형성을 통한 느슨한 결합을 활용할 수 있게 함
Q.Spring의 어떤 부분이 불편해서 boot가 쉽게 만들 수 있게 해주도록 등장한거지?
기존 Spring은 많은 환경 설정이 필요하다.
데이터 베이스를 사용하기 위해, Spring Config, DB Config, View Resolver 등... 많은 설정 파일을 구성해야 함(혹은 root-context.xml, servlet-config.xml에 servlet관련, web 관련 여러 설정이 필요)
Spring Boot는 applicaition.yml or application.properties의 설정만으로 간단히 해결!
Spring만 사용할 때는 DataSource를 빈으로 등록해주고, jdbcTemplate도 bean으로 등록해주는 코드가 있었다.
//실제 applicaion.yml의 일부
server:
port: 8080
servlet:
context-path: /api
encoding:
charset: utf-8
enabled: true
force: true
spring:
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
jpa:
hibernate:
ddl-auto: update
properties:
hibernate:
format_sql: true
jdbc:
batch_size: 10000
order_inserts: true
dialect: org.hibernate.dialect.MySQL8InnoDBDialect
정리
1.Classpath에 라이브러리 jar파일이 등록되면 spring.factories에 있는 관련 설정이 실행된다.
2.자동 설정 후보 클래스의 @Conditional~ 조건에 따라 빈으로 등록된다.
3.spring-configuration-metadata는 자동 설정에 사용할 프로퍼티 정의 파일로, application.yml에 작성한 값으로 프로퍼티를 세팅한 후, 구현되어 있는 자동 설정에 값을 주입시켜준다.
1) 어플리케이션 WAR 패키징
2) WAS 설치(Tomcat, Jetty.. 등)
3) WAS에 WAR 파일 올리기