반응형
Vert.x로 데몬을 만들다가 instance, worker 및 poolsize를 설정하는것을 편리하게 Annotation으로 만들때 사용하려고 찾아보다 알게된 내용.
언제든지 편하게 사용할 수 있을것 같아 기록..!
=>
Reflection API를 편리하게 사용할수 있게 해주는 라이브러리가있다!!!
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.10</version>
</dependency>
요 라이브러리를 사용하면 아주 편리하게 Annotation에 정해놓은 값들을 꺼내서 사용할 수 있다.
아래는 사용부분 코드
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Verticle {
boolean isWorker() default true;
int instance() default 1;
int poolSize() default 100;
}
Verticle의 worker, instance, poolsize를 설정하는 Annotation을 만들어놓은뒤 아래와 같이 가져와서 사용한다.
final Reflections reflections = new Reflections("com.won.test.verticle");
final Set<Class<?>> verticles = reflections.getTypesAnnotatedWith(Verticle.class);
for (Class<?> verticle : verticles) {
System.out.println("Verticle.class.getName()>> " + Verticle.class.getName());
Verticle annotation = verticle.getAnnotation(Verticle.class);
DeploymentOptions deploymentOptions = new DeploymentOptions();
deploymentOptions.setInstances(annotation.instance());
deploymentOptions.setWorker(annotation.isWorker());
deploymentOptions.setWorkerPoolSize(annotation.poolSize());
}
new Reflections(Custom Annotation Class)로 내가 만든 Custom Annotation을 불러오고,
getTypesAnnotationWith(Verticle.class) 를 통해 해당 어노테이션에 할당 받은 isWorker(), instance(), poolSize()를 가져와서 사용한다.
Daemon 만들떄 편하게 사용했다.
Vert.x도 더 공부해서 기록할 예정! 화이팅
반응형
'Java > Basic' 카테고리의 다른 글
[Java-Basic] Java 정규표현식 (0) | 2021.05.24 |
---|---|
[Java-Basic] JVM 메모리구조 및 개념 (0) | 2021.05.21 |
[Java/Basic] Queue란 ? Stack이란? 사용법 및 기본개념 (0) | 2021.04.13 |
[Java/Basic] Daemon Thread란? 백그라운드 실행데몬? (0) | 2021.04.13 |
[Java/Basic] Thread run과 start의 차이 (0) | 2021.04.12 |