ApplicationContextAware
ApplicationContextAware를 사용할려면
setAC(AC ac){}를 오버라이딩해야한다
Application을 인자로 받아와야한다.
가지고와서 빈이나 컨텍스트 주소값이랑 메인메서드에서 주소값을 확인해보니 같다.
컨텍스트를 받아와 빈을 가져올수도있는데 가져와서 뭐하지?
빈에서 직접 접근해서 쓸때가 있나보다.
블로그에 설명글은
bean에서 ApplicationContext에 직접 접근 시 사용
이라고 한다.
웹을 구현하다보면 언젠간 사용할때가 생기지않을까싶다.
그리고 init-Method보다 먼저 호출된다
======================================================================
Annotation
이때까지 @Override만 사용해봤다
라벨정도라고 보면은 된다고 한다.
자바에서 제공하는
@Deprecated, @Override 등등있다고 한다.
1. @Deprecated는 직접 작성한 메소드나 클래스(필드까지는모르겠다.)
를 사용하지 않았으면 한다고 알려주는기능이라고한다.
저 어노테이션 얹고 호출하면 짝대기가 찍 올라와있다.
좋은기능인거 같다.
2.@Override
슈퍼클래스의 메서드를 수정해서 사용하는것이다.
이때까지는 그냥 별생각없이 사용했는데 설명을 보니 이 어노테이션을 사용하면
슈퍼클래스 내용이 수정되면 나에게 에러문구가 뜨니
수정해야할내용을 쉽게 알수있을거같다.
커스텀 어노테이션도 조금해봤는데 복잡하네요
이건 다음에 마저정리해서 올리겠습니다.
===================================================
Cumtom Annotation
어노테이션내용을 직접 작성해서 사용하는것 같습니다.
이건 조금하다가 밥먹으러가서 많이 못했습니다.
작성법은
접근제한 @interface 어노테이션명 {
ex)
String value();// value가 기본값이라고 합니다. 뒤에 default같은 옵션도 넣을수있습니다.
}
입니다.
코드를 짤때는 메타데이터 용도로만 짜봤습니다.
작성한 어노테이션 위에 @Target, @Retention 등 설정을 할수있습니다.
다른것도 더있는데 안해봤습니다.
@Target() = 인자로 ElementType타입을 넣을수있습니다.
FILED =
ENUM =
....
이것저것 컨스트럭터도 보이고 말그대로 단어를 넣으면 단어그대로 형식에 적용할수있습니다.
@Retention() = 인자로 RetentionPolicy타입을 넣을수있습니다.
선택내용은 SORUCE, CLASS, COMPILE 이며
SOURCE = 소스까지 유지(컴파일시 사라짐), 바이트코드로 컴파일전까지 일까요?
CLASS = 컴파일까지 유지, 컴파일후 CLASS파일까지는 남아있다고하네요. 바이트코드로 된파일을 말하는걸까요?
COMPILE = vm에 실행동안에도 유지
1.여튼 메인메서드에서 method라는 타입으로 어노테이션을 얹은 메서드,필드를 넣어줍니다.
ex)Method method = TheClass.class.getMethod("doThis”);
2.methodthod에 선언된 어노테이션을 가져옵니다.
ex)Annotation[] annotations = method.getDeclaredAnnotations();
3.위에 어노테이션배열에서 어노테이션을 뽑아왔습니다.
형변환을 할수있는지 확인해줍니다.
if (annotation instanceof 커스텀어노테이션명)
4.true면은 커스톰어노테이션으로 캐스팅해줍니다.
커스텀어노테이션 customAnno = (커스텀어노테이션) annotation;
5.커스텀어노테이션에 만든 메서드를 호출해줍니다. 위에서 어노테이션적용할때 설정한 값이 리턴됩니다.
customAnno.exam();
어렵네요 다~음에 쓸때가오면 다시 공부해보겠습니다
끝
댓글 0