Spring Boot conditional 주해 용법 상세 설명

1.conditional 주해 소개
조건 에 기초 한 주해
역할:특정한 조건 을 만족 시 킬 지 여부 에 따라 특정한 bean 을 만 들 지 여 부 를 결정 합 니 다.
의미:Springboot 자동 설정 의 관건 적 인 기초 능력
2.흔 한 conditional 주해
@ConditionalOnBean 프레임 에 어떤 Bean 이 존재 할 때 유효 합 니 다.
@conditional OnMissingBean 은 Bean 이 존재 하지 않 을 때 유효 합 니 다.
@conditional OnClass 프레임 에 어떤 Class 가 존재 할 때 유효 합 니 다.
@conditional OnMissingClass 는 Class 가 존재 하지 않 을 때 유효 합 니 다.
@ConditionalOnWebApplication 현재 웹 환경
@ConditionalOnNotWebApplication 은 현재 웹 환경 이 아 닙 니 다.
@conditionalOnProperty 현재 프레임 에 특정한 속성 이 포함 되 어 있 는 지 여부
@ConditionalOnJava 현재 자바 버 전이 존재 하 는 지 여부
3.Conditional 의 사용
1)A.java 를 만 들 고 주석 conditionalOnProperty 를 추가 하여 시스템 에 이 속성 이 있어 야 실례 화 A

@Component
@ConditionalOnProperty("com.example.condition")
public class A {
}
2)테스트 클래스 생 성

@RunWith(SpringRunner.class)
@SpringBootTest
@Import(MyBeanImport.class)
public class ConditionTest implements ApplicationContextAware {
 
  private ApplicationContext applicationContext;
 
 
  @Test
  public void testA() {
    System.out.println(applicationContext.getBean(A.class));
  }
 
 
  @Override
  public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    this.applicationContext = applicationContext;
  }
}
3.테스트 클래스 실행
이상 을 던 져 A 라 는 종 류 를 찾 지 못 했다 는 뜻 이다.

그리고 application.properties 파일 에 속성 을 추가 합 니 다.

테스트 를 다시 실행 하 다.성공

4.A 류 에 주석 이 있 습 니 다 Condition OnProperty

1)주석 Condition OnProperty 에 들어간다.안에@Conditional 주해 가 있어 요.

2)@Conditional 주해 에 들 어 갑 니 다.안에 있 는 value 는 Class 형식 이 며,자체 Condition 인 터 페 이 스 를 계승 합 니 다.

3)Condition 인터페이스 에 들어간다.안 에는 방법 이 하나 밖 에 없다.이 방법 이 true 로 돌아 갈 때 이 bean 은 용기 에 주입 된다.

5.사용자 정의 Conditional 주석
1)MyCondition 클래스 를 만 듭 니 다.Condition 인터페이스 재 작성 matches 방법 을 실현 하고 조건 에 맞 게 true 로 돌아 갑 니 다.

public class MyCondition implements Condition {
  @Override
  public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
    String[] properties = (String[]) metadata
        .getAnnotationAttributes("com.example.demo.condi.MyConditionAnnotation")
        .get("value");
    for(String property : properties){
      if(StringUtils.isEmpty(context.getEnvironment().getProperty(property))){
        return false;
      }
    }
    return true;
  }
}
2)주석 MyConditionAnnotation 을 만 들 고,Conditional 주석 을 도입 하여 MyCondition 클래스 를 도입 한다.

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Conditional({MyCondition.class})
public @interface MyConditionAnnotation {
  String[] value() default {};
}
3)클래스 AA 생 성 설명 사용 MyCondition Annotation

@Component
@MyConditionAnnotation({"com.example.condition1","com.example.condition2"})
public class AA {
}
4)테스트
a)이 때 com.example.condition 1 과 com.example.condition 2 두 속성 값 이 없습니다.모든 테스트 에 실 패 했 습 니 다.

b)그리고 이 두 속성 을 증가 합 니 다.

테스트 성공

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기