본문 바로가기
Java/Java 이론 정리

[Java] (쓰레드/)annotation

by ProSeraphina 2020. 7. 30.

#ANNOTATION

주석처럼 코드에 달아 의미를 부여하거나 기능을 주입할 수 있음. (추후에 다시 학습)

 

이클립스 화면 File>>new에서 annotation 생성

일단 메소드만 출력해보려고 함.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.sist.ann;
//스프링에서 주로 사용
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
 
@Retention(RUNTIME)
@Target(METHOD)
public @interface RequestMapping {
    public String value();
}
cs

 

클래스를 만들고 그안에 CRUD 메소드 저장

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.sist.ann;
import java.lang.reflect.Method;
import java.util.*;
public class UserMain2 {
 
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("요청:");
        String ss=sc.next();
        try {
            Class clsName=Class.forName("com.sist.ann.MovieModel");
            //클래스 정보읽기
            Object obj=clsName.newInstance();
            //메소드 찾기(java.lang.reflect)
            Method[] methods=clsName.getDeclaredMethods();
            for(Method m:methods) {
                //System.out.println(m.getName());
                RequestMapping rm=m.getAnnotation(RequestMapping.class);
                if(rm.value().equals(ss)) {
                    m.invoke(obj, null);
                }
            }
        }catch(Exception ex) {}
    }
}
 

 

1. annotation으로 소환

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.sist.ann;
import java.lang.reflect.Method;
import java.util.*;
public class UserMain {
 
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("요청:");
        String ss=sc.next();
        try {
            Class clsName=Class.forName("com.sist.ann.MovieModel");
            //클래스 정보읽기
            Object obj=clsName.newInstance();
            //메소드 찾기(java.lang.reflect)
            Method[] methods=clsName.getDeclaredMethods();
            for(Method m:methods) {
                //System.out.println(m.getName());
                RequestMapping rm=m.getAnnotation(RequestMapping.class);
                if(rm.value().equals(ss)) {
                    m.invoke(obj, null);
                }
            }
        }catch(Exception ex) {}
    }
}
cs

 

2. if문. 완전 동일

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.sist.ann;
import java.util.*;
public class UserMain {
 
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("사용자 요청:");
        String ss=sc.next();
        MovieModel mm=new MovieModel();
        if(ss.equals("a")){
            mm.list();
        }else if(ss.equals("b")){
            mm.delete();
        }else if(ss.equals("c")){
            mm.find();
        }else if(ss.equals("d")){
            mm.update();
        }else if(ss.equals("e")){
            mm.insert();
        }
    }
}
cs

 

console창 결과

  사용자 요청:a
  목록 출력!

끝.

댓글