`
- 浏览:
658198 次
-
1、自定义注解@People
- packagecom.kute.test.selfannotation;
- importjava.awt.Color;
- importjava.lang.annotation.Documented;
- importjava.lang.annotation.ElementType;
- importjava.lang.annotation.Retention;
- importjava.lang.annotation.RetentionPolicy;
- importjava.lang.annotation.Target;
- @Documented
- @Retention(RetentionPolicy.RUNTIME)
- @Target({ElementType.TYPE,ElementType.METHOD})
- public@interfacePeople{
- publicenumPeopleType{MAN,WOMAN,GOODMAN,BADMAN,BIGMAN,SMALLMAN}
- publicPeopleTypetype()defaultPeopleType.MAN;
- publicStringname()default"";
- publicintage();
- publicString[]fruitColor()default{"red","black"};
- }
2、解析注解
- packagecom.kute.test.selfannotation;
- importjava.lang.reflect.Method;
- importorg.slf4j.Logger;
- importorg.slf4j.LoggerFactory;
- importorg.springframework.beans.BeansException;
- importorg.springframework.beans.factory.InitializingBean;
- importorg.springframework.beans.factory.config.BeanPostProcessor;
- importorg.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
- importorg.springframework.util.ReflectionUtils;
- importcom.kute.test.selfannotation.People.PeopleType;
- publicclassAnnotionParse{
- privatestaticLoggerlogger=LoggerFactory.getLogger(AnnotionParse.class);
- publicvoidparse(Classclazz){
- try{
- Objectclasz=clazz.getConstructor(newClass[]{}).newInstance(
- newObject[]{});
- if(null!=clasz.getClass().getAnnotation(People.class)){
- Method[]methods=clasz.getClass().getDeclaredMethods();
- for(Methodmethod:methods){
- Peoplepeople=method.getAnnotation(People.class);
- if(null!=people){
- ObjectoType=people.type();
- ObjectoName=people.name();
- intoAge=people.age();
- String[]fruitColor=people.fruitColor();
- StringBufferbuffer=newStringBuffer();
- for(Strings:fruitColor)
- buffer.append(s+",");
- logger.info("取出了方法的参数:[oType:"+oType+"],[oName:"
- +oName+"],[oAge:"+oAge+"],[fruitColor:"
- +buffer.toString()+"]");
- if(method.getParameterTypes()[0]
- .equals("com.kute.test.selfannotation.People.PeopleType")){
- oType=(PeopleType)oType;
- }
- if(method.getParameterTypes()[1]
- .equals("java.lang.String")){
- oName=oName.toString();
- }
- ReflectionUtils.invokeMethod(method,clasz,
- newObject[]{oType,oName,oAge,fruitColor});
- }
- }
- }
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
- }
3、应用注解
- packagecom.kute.test.selfannotation;
- importjava.io.Serializable;
- importorg.slf4j.Logger;
- importorg.slf4j.LoggerFactory;
- importcom.kute.test.selfannotation.People.PeopleType;
- @People(age=20)
- publicclassStudentimplementsSerializable{
- privatestaticfinallongserialVersionUID=1L;
- privatestaticLoggerlogger=LoggerFactory.getLogger(Student.class);
- @People(type=PeopleType.GOODMAN,name="kute",age=18,fruitColor={
- "blue","white","green"})
- publicvoidsetValue(PeopleTypestuType,StringstuName,intstuAge,
- String[]fruitColor){
- StringBufferbuffer=newStringBuffer();
- for(Stringcolor:fruitColor)
- buffer.append(color+",");
- logger.info("成功调用了方法并注入了参数:["+stuType+","+stuAge+","+stuName
- +",{"+buffer.toString()+"}]");
- }
- }
4、测试
- packagetest;
- importorg.junit.Test;
- importcom.kute.test.selfannotation.AnnotionParse;
- importcom.kute.test.selfannotation.Student;
- publicclassTestAnnotationParse{
- @Test
- publicvoidtest(){
- AnnotionParseparse=newAnnotionParse();
- parse.parse(Student.class);
- }
- }
5、运行结果
- 28[main]INFOcom.kute.test.selfannotation.AnnotionParse-取出了方法的参数:[oType:GOODMAN],[oName:kute],[oAge:18],[fruitColor:blue,white,green,]
- 28[main]INFOcom.kute.test.selfannotation.Student-成功调用了方法并注入了参数:[GOODMAN,18,kute,{blue,white,green,}]
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
java 自定义注解验证 可自己添加所需要的注解,本案例中只写了三个自定义注解类 本案例只花了半天时间,如有不好之处请多提提意见。谢谢!
包括Java自定义注解以及包括自定义注解的应用实例。以及注解相关知识的注解
这个一个自定义注解实现给注解传递伪动态参数的小案例,可以在此自定义注解的基础上来记录接口的调用记录。
java自定义注解实践,介绍详细!值得参考
通过一个超市的自动售卖机的例子,详细说明了java的自定义注解的使用。
自定义注解实现由类自定生成数据库中的表,适合各种类型的数据库,本案例主要实现的时sql server和oracle
自定义注解和通过反射获取注解
3、对spring aop认识模糊的,不清楚如何实现Java 自定义注解的 4、想看spring aop 注解实现记录系统日志并入库等 二、能学到什么 1、收获可用源码 2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑...
简单demo,导入即可运行。
java 元注解+拦截器实现自定义注解 @CmwAutoWired:自定义依赖注入 注意:注入的接口和实现类需要在同一包名下,注解的是类则无限制 @FieldAnnotation:自定义属性注解 @MethodAnnotation:自定义方法注解 @...
Java基础复习笔记12Java自定义注解Annotation的使用
利用java注解机制,实现自定义注解实例,例子中实现了简单的注解赋值和获取并打印值。
java自定义 注解 annotation、标签库tag、监听listener、junit简单测试代码
excel导入动态校验,自定义注解动态校验
自定义注解实现拦截sql,并在sql中增加相应的条件 。 对应博客: https://blog.csdn.net/qq_37716298/article/details/120659139
主要介绍了java 自定义注解的实例详解的相关资料,需要的朋友可以参考下
内容:拦截器的使用很简单,定义一个自己的拦截器,向配置中添加一下就可以使用。为了方便,之后又引入了注解。本文就将用简洁的代码构建一个springboot的拦截器。...oNoNeedToken.java 自定义注解
自定义注解结合Hutool对SpringBoot接口返回数据进行脱敏 自定义注解结合Hutool对SpringBoot接口返回数据进行脱敏 自定义注解结合Hutool对SpringBoot接口返回数据进行脱敏 自定义注解结合Hutool对SpringBoot接口返回...
# 自定义注解的规则: - 1.定义注解 - 2.定义注解的切面 - 3.使用注解
Java自定义注解程序Demo