You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
이름이 직관적이어서 바로 이해가 될 것이다. @ConditionalOnXxx 는 주로 스프링 부트 자동 구성에 사용된다.
다음 자동 구성 클래스들을 열어서 소스 코드를 확인해보면 @ConditionalOnXxx 가 아주 많이 사용되는 것을 확인 할 수 있다.
JdbcTemplateAutoConfiguration , DataSourceTransactionManagerAutoConfiguration ,DataSourceAutoConfiguration
참고 @conditional 자체는 스프링 부트가 아니라 스프링 프레임워크의 기능이다. 스프링 부트는 이 기능을 확장해서 @ConditionalOnXxx 를 제공한다.
@autoConfiguration 을 이해하기 위해서는 그 전에 먼저 라이브러리가 어떻게 사용되는지 이해하는 것이 필요하다. 든 실시간 자바 Memory 조회 기능이 좋다고 소문이 나서, 여러 프로젝트에서 사용하고 싶어한다. 이 기능을 여러곳에서 사용할 수 있도록 라이브러리로 만들어보자.
스프링 부트 자동 구성을 사용하는 것이 아니기 때문에 빈을 직접 하나하나 등록해주어야 한다.
서버 실행 로그 MemoryFinder : init memoryFinder
결과 {"used": 38174528, "max": 8589934592}
정리
그런데 라이브러리를 사용하는 클라이언트 개발자 입장을 생각해보면, 라이브러리 내부에 있는 어떤 빈을 등록해야하는지 알아야 하고, 그것을 또 하나하나 빈으로 등록해야 한다. 지금처럼 간단한 라이브러리가 아니라 초기 설정이 복잡하다면 사용자 입장에서는 상당히 귀찮은 작업이 될 수 있다.
이런 부분을 자동으로 처리해주는 것이 바로 스프링 부트 자동 구성(Auto Configuration)이다.
자동 구성 라이브러리 만들기
프로젝트에 라이브러리를 추가만 하면 모든 구성이 자동으로 처리되도록 해보자. 쉽게 이야기해서 스프링 빈들이 자동으로 등록되는 것이다. 여기에 추가로 memory=on 옵션도 적용할 수 있게 해보자.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
@conditional
@Conditional이다.@Condition인터페이스를 살펴 보자Condition 인터페이스를 구현해서 다음과 같이 자바 시스템 속성이 memory=on 이라고 되어 있을 때만 메모리 기능이 동작하도록 만들어보자.
MemoryCondition
MemoryConfig - 수정
참고
@conditional - 다양한 기능
MemoryConfig - 수정
@ConditionalOnProperty
@ConditionalOnXxx
스프링은 @conditional 과 관련해서 개발자가 편리하게 사용할 수 있도록 수 많은 @ConditionalOnXxx 를 제공한다.
@ConditionalOnClass , @ConditionalOnMissingClass
@ConditionalOnBean , @ConditionalOnMissingBean
@ConditionalOnProperty
@ConditionalOnResource
@ConditionalOnWebApplication , @ConditionalOnNotWebApplication
@ConditionalOnExpression
이름이 직관적이어서 바로 이해가 될 것이다. @ConditionalOnXxx 는 주로 스프링 부트 자동 구성에 사용된다.
다음 자동 구성 클래스들을 열어서 소스 코드를 확인해보면 @ConditionalOnXxx 가 아주 많이 사용되는 것을 확인 할 수 있다.
JdbcTemplateAutoConfiguration , DataSourceTransactionManagerAutoConfiguration ,DataSourceAutoConfiguration
참고
@conditional 자체는 스프링 부트가 아니라 스프링 프레임워크의 기능이다. 스프링 부트는 이 기능을 확장해서 @ConditionalOnXxx 를 제공한다.
정리
스프링 부트가 제공하는 자동 구성 기능을 이해하려면 다음 개념을 이해해야 한다.
순수 라이브러리 만들기
MemoryFinder
MemoryController
MemoryFinderTest
순수 라이브러리 사용하기1
HelloController
결과 :
hello순수 라이브러리 사용하기2
주의
하자
프로젝트 임포트
라이브러리 설정
MemoryConfig
서버 실행 로그
MemoryFinder : init memoryFinder결과
{"used": 38174528, "max": 8589934592}정리
자동 구성 라이브러리 만들기
자동 구성 추가
MemoryAutoConfig
자동 구성 대상 지정
파일 생성
src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports자동 구성 라이브러리 사용하기1
HelloController
자동 구성 라이브러리 사용하기2
라이브러리 추가
주의
라이브러리 설정
정리
Beta Was this translation helpful? Give feedback.
All reactions