Java에서 사용자 정의 주석을 작성하는 방법을 배우려고합니다.다른 객체를 주입하는 Java 사용자 정의 주석
학습을 위해 필자는 주석을 사용하여 클래스에 필드를 사용할 수있게 만드는 주석을 작성하기로 결정했습니다. 즉 주입 : 간단하지만 주입을 단순화하기 위해 필요하지는 않지만 그것은 또한 환영 받는다.
=============== 클래스 1 ========= ========================
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface AutoInject {
}
=================== ============== CLASS 2 ==================== =
// The class to be injected in Main.java
public class TestClass0 {
void printSomething(){
System.out.println("PrintSomething: TestClass0");
}
}
================================= CLASS 3 ===== ===============
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
public class Main {
TestClass0 ts0;
// Injecting here!!
@AutoInject
public TestClass0 getTso() {
return ts0;
}
public void setTso(TestClass0 ts) {
ts0 = ts;
}
public static void main(String[] args) {
performAnnotationScanOnClass (Main.class);
// Create instance
Main main = new Main();
main.getTso().printSomething();
}
public static void performAnnotationScanOnClass(Class<?> clazz) {
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
Annotation[] annotations = field.getAnnotations();
for (Annotation annotation : annotations) {
if (annotation instanceof AutoInject) {
AutoInject autoInject = (AutoInject) annotation;
// if (field.get(...) == null)
// field.set(... , value)
}
}
}
}
}
정적 보들 main()에서 볼 수 있듯이, TestClass0에서 메서드를 호출하려고합니다. 사용 가능할 것으로 예상됩니다. 위의 내용은 거의 완성 된 것입니다.하지만 방금 주석을 배우기 시작했고 귀하의지도를 원합니다.
우리는 어떻게 새로운 또는 get 메소드가 호출에 속성 중 하나를 initializez 코드 조각을 발사 할 수 있습니다. 주석 사용. 나는 을 변경하지 않고 메서드를 호출하지 않고 생각하고있다.
감사합니다.
당신은 당신의 테스트 주석을 생각하지만, 당신이 정말로 CDI를 개혁하고 있습니다. 바퀴를 재발견하지 마라. – Perception
나는 아무것도 재발 명하지 않는다. 나는 다른 사람들이 무엇을 어떻게 획득하고 창조했는지를 배우려고 노력하고있다. 그 차이를 이해하니? 그것의 교육 목적을 위해. – momomo
좋아, 그럼 그걸로 행운을 빈다! 나는 당신이 많이 배울 것이라고 확신합니다. – Perception