当前位置: 首页 > news >正文

微信与与网站建设安康网站建设公司报价

微信与与网站建设,安康网站建设公司报价,什么是营销型网站?,湖州网站优化元注解 1.元注解1.1 Target1.2 Retention1.3 Inherited1.4 Documented1.5 interface 2.自定义注解2.1 创建自定义注解类2.2 实现业务逻辑2.3 使用自定义注解 1.元注解 元注解就是定义注解的注解#xff0c;是 Java 提供的用于定义注解的基本注解。 注解 说明 Retention是注解… 元注解 1.元注解1.1 Target1.2 Retention1.3 Inherited1.4 Documented1.5 interface 2.自定义注解2.1 创建自定义注解类2.2 实现业务逻辑2.3 使用自定义注解 1.元注解 元注解就是定义注解的注解是 Java 提供的用于定义注解的基本注解。 注解 说明 Retention是注解类实现声明类 Class声明类别 Category声明扩展 ExtensionTarget放在自定义注解的上边表明该注解可以使用的范围Inherited允许子类继承父类的注解在子类中可以获取使用父类注解Documented表明这个注释是由 Javadoc 记录的interface用来自定义注释类型 1.1 Target 该注解的作用是告诉 Java 将自定义的注解放在什么地方比如类、方法、构造器、变量上等。它的值是一个枚举类型有如下属性值。 ElementType.CONSTRUCTOR用于描述构造器。ElementType.FIELD用于描述成员变量、对象、属性包括 enum 实例。ElementType.LOCAL_VARIABLE用于描述局部变量。ElementType.METHOD用于描述方法。ElementType.PACKAGE用于描述包。ElementType.PARAMETER用于描述参数。ElementType.TYPE用于描述类、接口包括注解类型或 enum 声明。 1.2 Retention 该注解用于说明自定义注解的生命周期在注解中有三个生命周期。 RetentionPolicy.RUNTIME始终不会丢弃运行期也保留该注解可以使用反射机制读取该注解的信息。自定义的注解通常使用这种方式。RetentionPolicy.CLASS类加载时丢弃默认使用这种方式。RetentionPolicy.SOURCE编译阶段丢弃自定义注解在编译结束之后就不再有意义所以它们不会写入字节码。Override、SuppressWarnings 都属于这类注解。 1.3 Inherited 该注解是一个标记注解表明被标注的类型是可以被继承的。如果一个使用了 Inherited 修饰的 Annotation 类型被用于一个 Class则这个 Annotation 将被用于该 Class 的子类。 1.4 Documented 该注解表示是否将注解信息添加在 Java 文档中。 1.5 interface 该注解用来声明一个注解其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称返回值类型就是参数的类型返回值类型只能是基本类型、Class、String、enum。可以通过 default 来声明参数的默认值。 定义注解格式见以下代码 public interface 注解名{定义体}2.自定义注解 有时需要自定义注解来快捷地实现功能。本实例演示如何自定义注解以及实现业务逻辑处理。 2.1 创建自定义注解类 package com.example.demo;import org.springframework.stereotype.Component;import java.lang.annotation.*;Target({ElementType.METHOD, ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Documented Component public interface MyTestAnnotation {String value(); }代码解释如下。 使用 Target 注解标注作用范围。使用 Retention 注解标注生命周期。使用 Documented 将注解信息添加在 Java 文档中。 2.2 实现业务逻辑 以 AOP 的方式实现业务逻辑见以下代码 package com.example.demo;import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; import org.aspectj.lang.reflect.MethodSignature; import org.springframework.stereotype.Component;import java.lang.reflect.Method;Aspect Component public class TestAnnotationAspect {// 拦截被 TestAnnotation 注解的方法如果需要拦截指定 package 指定规则名称的方法可以使用表达式 execution(...)Pointcut(annotation(com.example.demo.MyTestAnnotation))public void myAnnotationPointCut() {}Before(myAnnotationPointCut())public void before(JoinPoint joinPoint) throws Throwable {MethodSignature sign (MethodSignature) joinPoint.getSignature();Method method sign.getMethod();MyTestAnnotation annotation method.getAnnotation(MyTestAnnotation.class);// 获取注解参数System.out.print(打印TestAnnotation 参数 annotation.value());}}类注解 Aspect这是一个切面注解用于标记这个类为一个切面类。切面类包含了通知Advice定义了要在哪些连接点JoinPoint上执行的逻辑。Component这是一个组件注解用于将这个切面类注册为 Spring 容器中的一个组件以便 Spring 可以自动扫描并实例化它。 切入点表达式 Pointcut(annotation(com.example.demo.MyTestAnnotation))这是一个切入点Pointcut定义用于指定这个切面要拦截的操作。这里的切入点表达式表示拦截所有被 MyTestAnnotation 注解标记的方法。 通知方法 public void myAnnotationPointCut() {}这是一个空方法被上面的 Pointcut 标注用来定义切入点逻辑。 前置通知 Before(myAnnotationPointCut())这是一个前置通知表示在切入点 myAnnotationPointCut 指定的方法即被 MyTestAnnotation 注解的方法执行之前运行这个通知方法。public void before(JoinPoint joinPoint) throws Throwable {...}这是实际执行的前置通知方法。在这个方法中可以获取到被拦截方法的签名、参数等信息并且可以执行一些自定义的逻辑。 MethodSignature sign (MethodSignature) joinPoint.getSignature();获取方法签名。Method method sign.getMethod();获取具体的方法对象。MyTestAnnotation annotation method.getAnnotation(MyTestAnnotation.class);获取方法上的 MyTestAnnotation 注解。System.out.print(打印TestAnnotation 参数 annotation.value());打印注解的参数值。 这段代码的作用是在 Spring AOP 环境下拦截所有使用了 MyTestAnnotation 注解的方法并在这些方法执行之前打印出注解的参数值。这种机制可以用来做很多有趣的事情比如 日志记录、权限检查、性能监控 等极大地增强了代码的灵活性和可维护性。 2.3 使用自定义注解 在需要使用的地方使用自定义注解直接添加注解名即可见以下代码 package com.example.demo;import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList; import java.util.List;RestController EnableAspectJAutoProxy public class TestController {RequestMapping(/)MyTestAnnotation(测试Annotation)public void testAnnotation() {System.err.println(测试自定义注解);}}运行上面代码输出如下结果
http://www.hkea.cn/news/14470571/

相关文章:

  • 张掖响应式建站平台wap网站需要什么服务器
  • 韶关市建设与房地产信息网站网站文站加入别人网站的链接是否对自己网站不好
  • 怎么用自己的电脑建设网站域名注册商有哪些
  • 最好的企业网站源码提供常州网站推广
  • 网站一键提交收录如何制作微信图文链接
  • 做学科竞赛的网站分页网站
  • 网站 排版模板google网站登陆模板
  • 品牌网站建设内容flash网站开发
  • 营销型网站建设明细万户网络合肥
  • 哪个网站专业做商铺做网站编辑如何写好一篇新闻
  • 谷歌网站推广优化家庭农场做网站的好处
  • 在sae上搭建wordpress苏州网站排名优化价格
  • 房产律师网站模板有自己做网站的soho吗
  • 海南澄迈住房和城乡建设厅网站电影宣传网站开发设计
  • 怎样做网站导购教程大宗交易平台软件
  • html网站怎么做几个网页html代码下载
  • 建设工程信息网c证查询网站seo哪里做的好
  • 茶艺馆网站企查查企业信息
  • 理县网站建设公司龙华附近网站建设公司
  • 网站跟别的做的一样的线上怎么做推广
  • alexa全球网站排名分析赣州的免费网站建设
  • 东莞个人网站推广建设特色直播app下载
  • 网站源文件下载哪有网页设计公司
  • 优化后的网站小果seo实战培训课程
  • 邢台网站建设58做车展招商的网站
  • 北京网站备案负责人变更宁波谷歌推广
  • 网站关闭备案怎么给一个网站做搜索功能
  • 用ps做衣服网站首页网页设计图片自适应
  • 网站正在建设中的素材动图app开发公司未按照合同开发
  • 专业做网站+上海网站安装源码