똑같은 삽질은 2번 하지 말자
Spring Boot 개념다지기 No.2 본문
오늘도 공부를 시작해 보자!
Spring Boot의 프로젝트 구조
스프링 부트의 프로젝트 구조.. 음 아직 이것저것 추가안해서 아무것도 없는 상황이지만,
일단 대표적으로 java, resources 두개의 폴더가 보이는데, java에는 말그대로 자바코드로 이루어진 모든게 들어가고
resources는 자바코드가 아닌 모든 파일이 들어간다.
resources에는 ClassPath prefix 를 이용하면 쉽게 접근이 가능
그리고 Main Class? 라고 불러야하나 그 친구의 위치가 중요하다.
밑의 사진의 친구가 중요한게 저 클래스가 제일 상위의 패키지에 있어야 그 밑에 있는 여러 Bean들이
자동으로 등록이 되는거다.
위 사진을 보면 이게 실행되면 ComponentScan이 이루어지는걸 볼 수 있다.
Spring Boot 의존성 관리
그리고 보면 pom.xml에 딱히 Version을 기입한적이 없는데 잘 돌아가는 걸까?
spring-boot-starter-parent -> 첫날에 정의한 pom.xml의 이 친구를 따라가보면
spring-boot-dependencies가 보인다. 여기에 들어가보면 수많은 라이브러리가 보이는데 (버전이 기입된)
여기서 가져오는거다.
또 parent를 받아서 쓰면 의존성관리 뿐만아니라 UTF-8 설정 플러그인 설정, 다양한 기능이 많기때문에
받아 쓰는걸 권장한다. (dependencyManagement 쓰지 않고)
Spring Boot 의존성 활용
간단하다..dependencies에
이렇게 추가하면 된다.
무슨 의존성이 있는가 검색하고 싶을때는 이 사이트에 가서 ㄱㄱ
version 관리가 안되는건 version까지 써 줘야되고
version 관리가 되고있는데 version을 바꾸고 싶을때는,
이렇게 properties 속성을 추가해서 내가 사용하고 싶은 버전을 쓰면된다.
이건 spring-boot-dependencies 에 들아가면 있는걸 복붙해서 내가 버젼만 5.0.7 -> 5.0.6 으로 바꾼 것
자동설정이해
@EnableAutoConfiguration
@EnableAutoConfiguration (@SpringBootApplication 안에 숨어 있음)
빈은 사실 두 단계로 나눠서 읽힘
1단계: @ComponentScan
@Component @Configuration @Repository @Service @Controller @RestController
같은 애들이 읽히고
2단계: @EnableAutoConfiguration
META_INF 파일 안 spring.factories의
org.springframework.boot.autoconfigure.EnableAutoConfiguration 안에 있는 목록들 읽어들인다.
@Configuration (자바 설정)
@ConditionalOnXxxYyyZzz -> 이 컨디션에 따라 읽히거나 안 읽히거나 한다.
이렇게 1단계 2단계로 나누어져 있는데, 혹시나도 Bean이 겹치는 경우는
ConditionalOn 요놈으로 조정 하면 된다. Bean있으면 하지마라 뭐 이런식으로? => @ConditionalOnMissingBean
@ConfigurationProperties -> 이건 application.properties 에서 빈 재정의를 하기 싫을때 쓰는 어노테이션..
'Spring > Spring Boot' 카테고리의 다른 글
Spring Boot 개념다지기 No.3 (0) | 2020.04.21 |
---|---|
The server time zone value '???' is unrecognized or represents more than one time zone. (0) | 2020.04.20 |
Spring Boot 개념다지기 No.1 (0) | 2020.04.18 |
MYSQLでページングをする時 (0) | 2020.04.10 |
Domain Driven Design 도메인 모델 패턴 (0) | 2020.03.07 |