Spring Boot의 자동 구성 기능은 사용해야하는 스프링 구성과 다른 상황에 따라 사용해서는 안되는 것을 결정할 수 있습니다. 예를 들어:
이것이 어떻게 달성 되었습니까? 그 이유는 Spring의 조건부 구성을 사용하여 응용 프로그램에 구성이 존재할 수 있지만 특정 특정 조건을 충족하기 전에 이러한 구성이 무시됩니다.
조건부 구성을 구현하려면 @Conditional 조건부 주석을 사용해야합니다. 다음으로 @Conditional의 작동 방식을 경험하기 위해 작은 예를 작성해 봅시다.
1. @conditional 작은 예
Windows에 목록을 표시하라는 명령은 DIR이며 Linux 시스템에 목록을 표시하는 명령은 LS입니다. 조건부 구성에 따라 다른 운영 체제에서 다른 값을 달성 할 수 있습니다.
1. 판단 조건의 정의
1.) Windows의 결정 조건
/** * Spring의 조건 인터페이스를 구현하고 matches () 메소드를 재정의하고 운영 체제가 Windows */public class wind }}
2.) Linux의 결정 조건
/** * Spring의 조건 인터페이스를 구현하고 matches () 메소드를 재정의하고 운영 체제가 Linux */public class linuxCondition 조건 인 경우 true를 반환합니다. }}
2. 다른 시스템에서 Bean 클래스
1.) 인터페이스
public interface listservice {public String showlistline ();}2.) Windows 아래에서 Bean 클래스
공개 클래스 WindowsListService emplements ListService {@override public String showlistline () {return "dir"; }}3.) Linux의 Bean 클래스
공개 클래스 LinuxListService implements ListService {@override public String showlistline () {return "ls"; }}3. 구성 클래스
@ConfigurationPublic Class ConditionConfig { / *** @Conditional Annotation을 전달하고 WindowsListService 인스턴스가 Windows 조건을 충족하는 경우* / @bean @Conditional (windowsCondition.Class) public listService WindOnwSlistService () {return new WindowsListService (); } / *** @Conditional Annotation을 전달하고 Linux 조건을 충족하는 경우 LinuxListService 인스턴스를 반환하십시오* / @bean @conditional (linuxCondition.class) public listService linuxListService () {return new LinuxListService (); }}4. 테스트 클래스
public class conditiontest {public static void main (String [] args) {AnnotationConfigApplicationContext Context = new AnnotationConfigApplicationContext (guestConfig.class); ListService listService = context.getBean (listService.class); system.out .println (context.getenvironment (). getProperty ( "os.name") + "시스템의 목록 명령은" + listservice.showlistline ()); }}5. Windows 7 시스템에 있기 때문에 테스트 클래스 실행 결과는 다음과 같습니다.
Windows 7 시스템의 목록 명령은 다음과 같습니다
당신이 Linux에 있으면 결과가 될 것입니다
Linux 시스템의 목록 명령은 다음과 같습니다
2. 스프링 부팅의 조건부 구성
Spring Boot 프로젝트에는 Spring-Boot-AutoConfigure라는 JAR 패키지가 있습니다.
이 JAR에서 조건부 구성이 구현됩니다. @Conditional로 시작하는 다음 조건부 주석을 사용합니다.
다음으로 소스 코드 열을 살펴 보겠습니다.
jdbctemplateautoconfiguration을 예로 들어 보자이 코드가 포함되어 있습니다.
@bean @primary @conditionalonmissingbean (jdbcoperations.class) public jdbctemplate jdbctemplate () {return new jdbctemplate (this.datasource); }jdbctemplate bean은 jdbcoperations가없는 경우에만 초기화됩니다 (JDBCTemplate의 소스 코드를 보면 jdbctemplate 클래스가 jdbcoperations 인터페이스를 구현 함을 알 수 있습니다).
위의 내용을 기반으로 자동 구성과 관련된 소스 코드를 읽을 수 있습니다.
요약
위는 편집기가 소개 한 스프링 부팅에서 @Conditional 및 Spring Boot의 자동 구성입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!