spring

스프링 부트 설정원리

SuuuuuuuL 2019. 3. 5. 22:43
스프링 부트 실행1

스프링 부트 소개

  • opinated view - 가장 많이 쓰이는 기본 설정을 제공(컨벤션)

  • 3rd party 기본 제공(톰캣)

  • 더 빠르고 폭넓은 개발

  • 빠른 설정의 변경 가능

스프링 부트 실행

spring starter project 생성하면 이미 다 추가되어있음

  1. pom.xml에 추가되는 3가지!

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>

<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>

이 3가지로 전부 다 추가됨 개꿀...

부트 프로젝트 구조

resources

  • /root로 전부 참조할 수 있음

  • @springBootApplication 을 붙인 main() 은 최상위(디폴트)가 좋다

    • 이 어노테이션이 붙은 패키지 아래의 것들을 다 componentScan을 시작하여 빈으로 등록하기 때문!

부트의 dependency 관리법

  • parents로 관리(starter-parent)

    • 관리하는 의존성이 줄어든다(개편함 일이 줄어듬)

    • 이미 관리하는 의존성이면 버전을 표시하지 않아도 알아서 상속받아옴

    • 리소스, 플러그인 설정 자동 세팅 등이 되니까 편리함!

    • dependency management로 직접 설정이 되지만 부트관리 설정이 안 따라오기 때문에 비추

  • 의존성 추가해보기

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>

아티팩트 아이디 자동완성으로 뜨는 경우는 버전 명시 하지 않아도 알아서 들어옴!

하지만 버전을 명시하는 것이 가장 best practice 이기 때문에 확인하여 가져오는 게 좋음

spring, java 버전 내가 원하는 걸로 바꾸기

  • properties 에서 버전을 명시해주면 바뀜 ! 오버라이딩 되는 원리로 버전이 바뀜!

자동설정

  • @SpringbootApplication

    • configuration +componentScan+autoConfiguration 3개 합친거같은 개념쓰

  • @EnableAutoConfiguration (@SpringbootApplication에 포함되어 있음) 스프링 부트는 빈을 두번 등록함!

    • 1단계 : @componentScan

      • @component 를 가진 class 스캔하여 빈으로 등록

    • 2단계 : @EnableAutoConfiguration

  • @configuration 자바 설정 파일임 ...

    • @confitional~ 로 시작하는 어노테이션과 함께 쓰이는데 이는 조건부로 빈이 등록되는 조건을 이야기함