Spring Boot conditional 주해 용법 상세 설명
4216 단어 SpringBootconditional주해
조건 에 기초 한 주해
역할:특정한 조건 을 만족 시 킬 지 여부 에 따라 특정한 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)그리고 이 두 속성 을 증가 합 니 다.
테스트 성공
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.