1 / 10
Java������ 12Java��
� Annotation�
�
��
Eamil:suhuanzheng7784877@163.com
1.
��
�
JDK1.5�
� ����
��
�
�����
���
���
��
�
�
���
fffi
flffi
EJB3.0
�
��
EJB2.X
� �!"
#$%
�
&'(
)*�
�
�+,-./
�
01
-.�2�
�34
�
�5
678�/9
:
�
JavaBean;
2�<= �2�>
?
�2�
��@A�-
B
Sun
�
JPACD
�
EJB3.X E
F
GH
IJK
#$L
�MNO �
�
P!
#$
%
QRST�UV
�WXY
Z �
[\]^
-.
_`a
Ubcd
Java
�
e
�
#f
g
�
hhi
Struts
/
Spring
/
Hibernatej
U
;
�k
4lmno�
SSH p
Rq
�r
2
]^
-.
_s
tu v
Java
w
H
U
�
xy
z
/{|�}~
$
d�2n-.
,/
CD
//
10��-.
Ł
�
XML
�
hh
""
�
2.
�
2�
�
¡ ¢
JPA
/
EJB
/
Spring
^
-.££
¤¥
ff¦
Ł§¨©
%
qnª« �
[¬
���
¡
®
�
�
¯
�
�
�
¯
ff
�
�
�
34°
ff
7±²³�´µ
5
package annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
*
¶·
*
* @author Administrator
*/
@Retention(RetentionPolicy.RUNTIME)
2 / 10
public @interface Test {
String isAop() default "false";
}
ff¸¹º
@interface
7±
»¼ �
ff
@interface
¸¹º
�½¾�¿
`
;
�
ÀÁT
Â
Ã
�
java.lang.annotation.Annotation
ÁT�
String isAop() default "false";
[ÄÅ
1Æ�¿
`
;
�
H
Test
L
�
Ç
2
È
É
�
isAop
�
Ê
È
�ËÌ
�º
ÍÎ
ËÌ�Ï
fi
Ð
ff
�ÑÒ
�
Ó
Ô
�
�
¯
Õ
¦¸
�
È
Ö�
¡
×
Ï
fi
ÐRÕÖ �
ØflÖ
�
false
@Retention(RetentionPolicy.RUNTIME)
[ÄÅ
1Æd
ff
À
�
Ł
ÖÙtÚÛÜ�Ï
fi
ÐÝÞÑ
ßà
�
áâ
34
;
55
Ï
fi
�
ff
package use;
import annotation.Test;
import annotation.TestImpl.TestProcess;
@Test(isAop = "true")
public class UseTest {
/**
* @param args
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws
ClassNotFoundException {
TestProcess.process("use.UseTest");
}
}
H
Ï
fi
Ðã
ffL
H
Ë
UseTest
¾
ff
�
@Test(isAop = "true")
�ää�
3 / 10
;
i å
æç
èé¬
�êë
��
ì
�
e
2
]í
_
�
�
ì
�
á
�±
î
¢]ï
®
Hð
_
�
êë�
[ÄÅñ
òó��
ï
¦ô
7±
�
Hõ
�ö2
ï
;
i÷
�
Ê
�Ë �
q Ú
[ÄÅ
�bc�
r
ø0R0êë�
è
�
~~~~
±ùÆ
w
Rú
j
û°
55�
¯
�
ü
ýþ
p
ß
��Æ
w�
¢][
±Û
�
2
_�
���Æ
w�
�°
55�
¾2
è�ð
2 ��
��
v
�
2
;
¢][
± Û
�
2 v
_�
>
�
��
¢]�
�°Ù
�
�7���
ð
��� v
_
�
[¬
�
ü
ý
;�
i
�
�
È
�RúÖ�
r
ø�
��
;
¦ô
��
�
��
�
w
�
�
r
ø�
w
Ë
;
�
��
�J��� ��Ô
�
Java
�
ß
ffAfi
��
Ï
fi
�
»Ë�
r
ø
�34
;
55
[
±
��
�
w
�
package annotation.TestImpl;
import java.lang.annotation.Annotation;
public class TestProcess {
public static void process(String str) throws
ClassNotFoundException {
Class clazz = Class.forName(str);
Annotation[] annotations = clazz.getAnnotations();
for (Annotation annotation : annotations) {
System.out.println(annotation);
}
}
}
�
¾�
��
��P²³ �
;
�
Ó
7±
º
ÍÎËÉflÚË�ffiûË�ö2
�ö2
�
7±�ó"��
!
"� ��
¦¸
Ł
�ÝÞ
�
¾�
"#
�
×
¡
á
@annotation.Test(isAop=true)
¡
×
34
ff
�Ï
fi
Ð1$0
7
á
@Test
public class UseTest {
4 / 10
%%%%%%%%
}
�
�
isAop &
R�'Õ�ÝÞ(
×
¡
á
@annotation.Test(isAop=false)
�
5
Ú
ff
�
�
ØflÖ
false
�
¡
×
L
Annotation &
�
2ÕØflÖ �
H
Ï
fi
Ð
ffL
U
�
ÕÖ �
)
¥
R
:*
+,�
@Retention(RetentionPolicy.XXXXXX)
¾
â
Ú�
�
Ù-
�2(.�
//
Ù-Ú+,��
class
L
�
÷/
Ë�ÑÒR0(
@Retention(RetentionPolicy.CLASS)
//
ää
H
1$Ù- �+,��
class
RÙ-
@Retention(RetentionPolicy.SOURCE)
//
H
+,��
class
2 �
:*
ß
ffUffiû
Ł
@Retention(RetentionPolicy.RUNTIME)
¡
Override
�
f
$
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
��
12
H
ff%
ff
�ÑÒ
;
�
5
� �ö
�
�3
�
Ù-ÚÝÞ.�
¡
SuppressWarnings
�
f
$
5 / 10
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR,
LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
String[] value();
}
�
¾�R
45
67�
U
�
H
+,7±Ë
�
89
:
�
�
¾
ff
�
@Target
�� 1 Æ d
� ; <
D =
�Ë Ì
�
java.lang.annotation.ElementType>
?
ËÌ�
public enum ElementType {
TYPE,//@
A
BC
DE
FG
EH
I
E¶·
FIELD,//@
A
BC
JKLM
METHOD,//@
A
BC
NO
PARAMETER,//@
A
BCPQ
CONSTRUCTOR,//@
A
BCRS
NO
LOCAL_VARIABLE,//@
A
BCTU
LM
ANNOTATION_TYPE,// @
A
BC
Annotation
PACKAGE//@
A
BC
V
}
5
Deprecated
f
$
@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface Deprecated {
}
Deprecated
1Æ
*
Ñ�¿
`
�
[
�
7±ÙtÚÝÞ.�
�
H
ÝÞ.
�
:*
ß
ff
ffiW
Ê
�
[¬
ff
�
@Documented
[
±X
��1Æd
Ê
Y
javadoc Z
r
4
W[\�
H
doc
\
L
�>]
��
Ê
�
Ł
>]RúRú�
6 / 10
27±
;
�
Inherited
�
¡
×
ff
�À»¼ �
)
¥
ff
À
�µËU
Â
Ã
À
��
�
3.
�´
P!ù2*^ �_
[`
2a
¥
ff
ð
�
#$
2a
¥
bc
�ð
EJB
/
JPA
34
ffd
[J�R
;
û��
áâ
F
5
7±
"e
´µ
Pojo
package annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Pojo {
String table();
}
Colum
package annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Colum {
String columName();
boolean isNULL() default true;
String Type() default "";
}
��
����
w
Ë
package annotation.TestImpl;
7 / 10
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import annotation.Colum;
import annotation.Pojo;
public class MyJPAProcess {
public static void process(Object object) throws
ClassNotFoundException {
// fg
¶·
Annotation[] annotationsClass =
object.getClass().getAnnotations();
Field[] fields = object.getClass().getDeclaredFields();
// hi
¶·jk
for (Annotation annotation : annotationsClass) {
if (annotation instanceof Pojo) {
System.out.println("--------lmPOJOn
o
--------");
Pojo pojo = (Pojo) annotation;
System.out.println("p
qrs t
" + pojo.table());
}
}
for (Field field : fields) {
//field.setAccessible(true);
Annotation[] annotationsMethos = field.getAnnotations();
// hi
¶·jk
for (Annotation annotation : annotationsMethos) {
if (annotation instanceof Colum) {
System.out.println("--------lmColumu
v
--------");
Colum colum = (Colum) annotation;
8 / 10
System.out.println("u
vs t
" + colum.columName());
System.out.println("u
vDw t
" + colum.Type());
System.out.println("x
yz{|
t
" + colum.isNULL());
}
}
}
}
}
�
¾
�
�²³�
2
±
Pojo
(
Colum
�}�
�
[
2
±
4
~���
��
�
áâ
34
55
Ï
fi
Ð
�
¤¥
ff
�
�
�
78��øË
package use;
import annotation.Colum;
import annotation.Pojo;
@Pojo(table = "person")
public class PersionPOJO {
public PersionPOJO() {
super();
}
@Colum(columName = "id", isNULL = false, Type = "varchar")
private String id;
@Colum(columName = "name", isNULL = false, Type = "varchar")
private String name;
@Colum(columName = "age", isNULL = true, Type = "int")
private int age;
//set/get
}
9 / 10
[
�
7±9
:
��ø�ó
+
�
�
���
[
±
POJO
34
F
7±
DAO
Ë
[
±
POJO
�
package use;
import annotation.TestImpl.MyJPAProcess;
public class PersionDAO {
public void save(PersionPOJO persionPOJO) throws
ClassNotFoundException {
MyJPAProcess.process(persionPOJO);
}
public static void main(String[] args) throws
ClassNotFoundException {
PersionDAO persionDAO = new PersionDAO();
PersionPOJO persionPOJO = new PersionPOJO();
persionDAO.save(persionPOJO);
}
}
¾
â
"#
;
�7±Ù} �
7
á
�ã
ff
[
±
save
}�fi�
¡
á
Ł
�
--------lmPOJOn
o
--------
p
qrs t
person
--------lmColumu
v
--------
u
vs t
id
u
vDw t
varchar
x
yz{|
t
false
--------lmColumu
v
--------
u
vs t
name
u
vDw t
varchar
10 / 10
x
yz{|
t
false
--------lmColumu
v
--------
u
vs t
age
u
vDw t
int
x
yz{|
t
true
DAO
L
ã
ff
�
���
w
�}�
[
±ÑÒ34Ł;7
á
���
w
�}
�-
B
7±
ORM
L
�
;
�
"ÙÚ"��
4.
�
��
�
78
�
ì
%
û7
`
2�-.
� �
÷
¾
��
�+
,-.�
27±��
¢
�
¯
#$
�
�
�
¯
�
{|/
�
¦�
�Ï
fi
���
27±��
¢
;
�
fi
CD
�
JPA
�
CD
/
EJB
�
CD
�
[`
CD
��
w¡�
Rú�]¢£��ö¤]¢
;
�
JBoss
%
Weblogic
[
\
JavaEE
]¢�
�
¯
�
jar¥
�
i Java SDK
U
�
4
��
¦�
�
CD
�Rú��
¦
�
[
±
CD
��
w
U
�
§
%¨
§©
%¨
© �
i
¾
â
4
��
JDK
>�
;
�
4
��
CD
�3
�
¯
sun
27ª�
w
Afi ��
e
��
¦ff
3
sun
�
JDK
�
w
R«U
�
�
Þ�
w
[
ª
Afi�
[¬:*
ß
ffAfiffiW
�
À
H
-.
L
-.�7
`Ł
�+,�
®¯
�-.
�
(°u
~~~
2ù
ß
ffAfi
±-.
²
/2ù-.
��
*³
ß
ff
²
P!�
[
±´
%
û§
%¨
©
%¨
© �
�
2S��µ¶ �Ú
ff·
±
ð
�
û
�
ßà
N�
本文档为【Java基础复习笔记12Java自定义注解Annotation的使用】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。