자동 구성(Auto Configuration)

존스노우·2023년 10월 5일
0

프로젝트 설정

  • 설정들 시작!

예제 만들기

  • 멤버 도메인 만들어 주기

  • 레파지토리

  • 테스트 생성

자동구성 확인

  • 빈 테스트

빈 등록 제거

  • Configuration 주석처리하자

  • Test는 통과하는데 소스는 Null
  • 뭔가 의존관계가 들어 와있다?

  • 스프링부트가 자동으로 등록해주는 빈들 이다.

스프링 부트의 자동 구성

  • 스프링부트 오토 컨피규어는 스프링 부트를 쓰면 자동으로 적용됨
  • SpringBootAutoConfigure

  • 많을 걸 자동으로?
  • 스프링부트 스타터를 쓰면 -> 스타터를 보함하고 -> 오토 컨피규어가 있다

  • 아직은 이런것들이 있다

  • 순서도 있어서 신기하다.
  • 분기조건에 이런 클래스가 있을때만 동작한다 이런 기능.

  • 빈을 등록하네?

  • JdbcOperations이 뭐지??

  • 인터페이스라고 보면된다 .
  • JdbcTemplate는 구현체
  • JdbcTemplate 빈 없을때 동작?
  • 자동구성과 내가 설정한구성이 충돌하기 때문에
  • 스프링 시큐리티에서도 비슷한거같다 내가 커스텀으로 등록한 설정하면 자동 구성은 동작하지않는다

  • 위에 설명한것과 같이 다시 말하면 자동으로 빈들이 등록해줌

  • 자동 구성 자동 설정 의미가 약간 서로다르지만 둘다 맞는 말.

자동 구성 직접 만들기 - 기반 예제

  • 패키지 나눠주는거 주의

  • 이제 메모리가 외부라이브러리라 생각하고. (다른 프로젝트)
  • 헬로 프로젝트에서 메모리 기능을 사용하고싶으니 빈으로 등록해야 된다.

@Conditional

  • 인터페이스 설정으로 동작 가능여부 결정 한다.
  • 이제 컨디셔널을 구현해보자

  • 컨디셔널 구현하고 메모리 On/off에 따른 컨피그 실행 분기

  • 설정이 안돼었기 때문에 404

  • 되는게 신기하넹
  • getEnviroment()
  • 이런식으로 설정하면 위 명령어를 통해 가져온다

@Conditional - 다양한 기능

  • 이런 설정도 정의되어있다.

  • 대충 그안에 편리하게 기능을 제공해주고 Conditial을 구현하고있다.

  • 예시 빈등록안되있으면 동작한다!

순수 라이브러리 만들기

  • 프로젝트 설정

  • 순수하게 라이브러리로 작동하게 만드는게 목적

  • 테스트 구현후 통과

순수 라이브러리 사용하기1

  • 여기서는 작동확인만

순수 라이브러리 사용하기2

  • 저번 시간에 만든 자르를 libs 폴더를 만들고 복사한다.

  • 추가

  • 그래들 리프레쉬 하면 인식이 된듯이 이리 나온다.
  • 다음 라이브러리를 어떻게 적용하지?
  • 메모리 자르에 있는 클래스파일을 빈으로 등록해야 된다.

  • 자동 구성이 아니기 때문에 수동으로 이렇게 빈으로 등록해야된다.

  • 출력 완료

자동구성 라이브러리 만들기

  • momory-v1 복사 붙여넣기하고 이름바꿔주기

  • 파일 추가!

  • 한가지를 더해 줘야됨

  • 파일만들어주기

  • 내용 적어주기

  • 스프링 부트가뜰때 방금 작성한 파일이 실행되서 자동 구성함

  • 빌드를 해주고 고 끝!

자동 구성 라이브러리 사용하기

  • 추가해주고 !
  • 이제 자동 구성을 해야된다!

  • 실행 완료

자동 구성 이해1 - 스프링 부트의 동작

  • 스프링부트 자동 구성에 사용되는 파일 명

  • 기존 자동으로 등록된 자동구성에 엄청나게 많은 자동구성들이 다 등록되있다.

  • 오토 컨피그레이션 활성하 하는 기능

  • 셀렉터?

  • import?
  • 무언가 설정 정보를 포함할때 사용


  • 부모는 ImportSelector
  • 스프링이 제공하는 기본 기능인데..

자동 구성 이해2 - ImportSelector

  • 분기처리로 특정 설정을 사용할 때 ?
  • ImportSelector!

  • 스트링 배열은 뭐지?
  • 내가 원하는 스프링 설정 정보 빈들을 반환하면 등록이 된다.

  • 내가 최종적으로 선택할 빈들을 설정해줘서 적어주자

  • 정적설정 테스트

  • 동적설정 테스트

  • 보통은 정적을 쓰는대...
  • 동적을 가끔 쓴다.
  • 유연한 사고방식

  • 이런 것들을 다 읽어서 설정정보로 활용함
  • 셀렉터가 파일들을 열어서 설정 정보 선택

  • 디버그 해보면 엄청난 설정파일들이..

  • impors만 빼면 똑같다?

  • 여기서 ..

  • !!!?

  • 이 파일안을 읽고.. 후보군을 다만들고...

  • 배열로해서 반환하게 되면.

  • 스프링 설정 빈으로 등록된다.

정리

  • 스프링 부트는 오토컨피큐레이션이 제외되도록 설정되어있따
  • 자동구성이 컴포넌트 스캔에 대상이 되면 안돼게
  • org.springframework.boot.autoconfigure.AutoConfiguration.imports
  • 요걸로 지정되게!

  • 이런식으로 사용하면 안된다고 !
  • @Import는 써도 된다.

profile
어제의 나보다 한걸음 더

0개의 댓글