자동 구성(Auto Configuration)
프로젝트 설정
예제 만들기
자동구성 확인
빈 등록 제거
- Test는 통과하는데 소스는 Null
- 뭔가 의존관계가 들어 와있다?
스프링 부트의 자동 구성
- 스프링부트 오토 컨피규어는 스프링 부트를 쓰면 자동으로 적용됨
- SpringBootAutoConfigure
- 많을 걸 자동으로?
- 스프링부트 스타터를 쓰면 -> 스타터를 보함하고 -> 오토 컨피규어가 있다
- 순서도 있어서 신기하다.
- 분기조건에 이런 클래스가 있을때만 동작한다 이런 기능.
- 인터페이스라고 보면된다 .
- JdbcTemplate는 구현체
- JdbcTemplate 빈 없을때 동작?
- 자동구성과 내가 설정한구성이 충돌하기 때문에
- 스프링 시큐리티에서도 비슷한거같다 내가 커스텀으로 등록한 설정하면 자동 구성은 동작하지않는다
- 위에 설명한것과 같이 다시 말하면 자동으로 빈들이 등록해줌
- 자동 구성 자동 설정 의미가 약간 서로다르지만 둘다 맞는 말.
자동 구성 직접 만들기 - 기반 예제
- 이제 메모리가 외부라이브러리라 생각하고. (다른 프로젝트)
- 헬로 프로젝트에서 메모리 기능을 사용하고싶으니 빈으로 등록해야 된다.
@Conditional
- 인터페이스 설정으로 동작 가능여부 결정 한다.
- 이제 컨디셔널을 구현해보자
- 컨디셔널 구현하고 메모리 On/off에 따른 컨피그 실행 분기
- 되는게 신기하넹
- getEnviroment()
- 이런식으로 설정하면 위 명령어를 통해 가져온다
@Conditional - 다양한 기능
- 대충 그안에 편리하게 기능을 제공해주고 Conditial을 구현하고있다.
순수 라이브러리 만들기
순수 라이브러리 사용하기1
순수 라이브러리 사용하기2
- 저번 시간에 만든 자르를 libs 폴더를 만들고 복사한다.
- 그래들 리프레쉬 하면 인식이 된듯이 이리 나온다.
- 다음 라이브러리를 어떻게 적용하지?
- 메모리 자르에 있는 클래스파일을 빈으로 등록해야 된다.
- 자동 구성이 아니기 때문에 수동으로 이렇게 빈으로 등록해야된다.
자동구성 라이브러리 만들기
- momory-v1 복사 붙여넣기하고 이름바꿔주기
- 스프링 부트가뜰때 방금 작성한 파일이 실행되서 자동 구성함
자동 구성 라이브러리 사용하기
자동 구성 이해1 - 스프링 부트의 동작
- 기존 자동으로 등록된 자동구성에 엄청나게 많은 자동구성들이 다 등록되있다.
- import?
- 무언가 설정 정보를 포함할때 사용
- 부모는 ImportSelector
- 스프링이 제공하는 기본 기능인데..
자동 구성 이해2 - ImportSelector
- 분기처리로 특정 설정을 사용할 때 ?
- ImportSelector!
- 스트링 배열은 뭐지?
- 내가 원하는 스프링 설정 정보 빈들을 반환하면 등록이 된다.
- 내가 최종적으로 선택할 빈들을 설정해줘서 적어주자
- 보통은 정적을 쓰는대...
- 동적을 가끔 쓴다.
- 유연한 사고방식
- 이런 것들을 다 읽어서 설정정보로 활용함
- 셀렉터가 파일들을 열어서 설정 정보 선택
정리
- 스프링 부트는 오토컨피큐레이션이 제외되도록 설정되어있따
- 자동구성이 컴포넌트 스캔에 대상이 되면 안돼게
- org.springframework.boot.autoconfigure.AutoConfiguration.imports
- 요걸로 지정되게!
- 이런식으로 사용하면 안된다고 !
- @Import는 써도 된다.