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

免费的网站域名查询565wccwordpress文章页面源码路径

免费的网站域名查询565wcc,wordpress文章页面源码路径,门户移动网站建设,电商网站取名#x1f3ac; 艳艳耶✌️#xff1a;个人主页 #x1f525; 个人专栏 #xff1a;《Spring与Mybatis集成整合》 ⛺️ 生活的理想#xff0c;为了不断更新自己 ! 1.前言 1.1.什么是注解 Annontation是Java5开始引入的新特征#xff0c;中文名称叫注解。 它提供了一种安全… 艳艳耶✌️个人主页 个人专栏 《Spring与Mybatis集成整合》 ⛺️  生活的理想为了不断更新自己 ! 1.前言 1.1.什么是注解 Annontation是Java5开始引入的新特征中文名称叫注解。 它提供了一种安全的类似注释的机制用来将任何的信息或元数据metadata与程序元素类、方法、成员变量等进行关联。为程序的元素类、方法、成员变量加上更直观、更明了的说明这些说明信息是与程序的业务逻辑无关并且供指定的工具或框架使用。Annontation像一种修饰符一样应用于包、类型、构造方法、方法、成员变量、参数及本地变量的声明语句中。 Java注解是附加在代码中的一些元信息用于一些工具在编译、运行时进行解析和使用起到说明、配置的功能。注解不会也不能影响代码的实际逻辑仅仅起到辅助性的作用。 1.2.注解的用处 生成文档。这是最常见的也是java 最早提供的注解。常用的有param return 等跟踪代码依赖性实现替代配置文件功能。比如Dagger 2 依赖注入未来java 开发将大量注解配置具有很大用处;在编译时进行格式检查。如override 放在方法前如果你这个方法并不是覆盖了超类方法则编译时就能检查出。 1.3.注解的原理 注解本质是一个继承了Annotation 的特殊接口其具体实现类是Java 运行时生成的动态代理类。而我们通过反射获取注解时返回的是Java 运行时生成的动态代理对象$Proxy1。通过代理对象调用自定义注解接口的方法会最终调用AnnotationInvocationHandler 的invoke 方法。该方法会从memberValues 这个Map 中索引出对应的值。而memberValues 的来源是Java 常量池。 2.注解的案列 2.1 案例一获取类与方法上的注解值 定义一个类 package com.sy.annotation.pi;public enum TranscationModel {Read, Write, ReadWrite //定义三个实例可以将它看作类} 写三个注解 package com.sy.annotation;import java.lang.annotation.*;/*** MyAnnotation1注解可以用在类、接口、属性、方法上* 注解运行期也保留* 不可继承*/ Target({ElementType.TYPE, ElementType.FIELD,ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) Documented public interface MyAnnotation1 {String name(); } package com.sy.annotation;import java.lang.annotation.*;/*** MyAnnotation2注解可以用在方法上* 注解运行期也保留* 不可继承*/ Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface MyAnnotation2 {TranscationModel model() default TranscationModel.ReadWrite; }package com.sy.annotation;import java.lang.annotation.*;/*** author shenyan** MyAnnotation3注解可以用在方法上* 注解运行期也保留* 可继承*/ Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Inherited Documented public interface MyAnnotation3 {TranscationModel[] models() default TranscationModel.ReadWrite; }创建几个方法使用这些注解 package com.sy.annotation.Demo1;import com.sy.annotation.MyAnnotation1; import com.sy.annotation.MyAnnotation2; import com.sy.annotation.MyAnnotation3; import com.sy.annotation.TranscationModel;/*** author shenyan** 获取类与方法上的注解值*/ MyAnnotation1(name 艳艳耶) public class Demo1 {MyAnnotation1(name csdn)private Integer age;MyAnnotation2(model TranscationModel.Read)public void list() {System.out.println(list);}MyAnnotation3(models {TranscationModel.Read, TranscationModel.Write})public void edit() {System.out.println(edit);} }最后进行测试 2.2  案例二获取类属性上的注解属性值默认值的赋予 自定义一个注解并赋予默认值 package com.sy.annotation.Demo2;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/*** author shenyan* / //Retention(RetentionPolicy.SOURCE) Retention(RetentionPolicy.RUNTIME) Target(ElementType.FIELD) public interface TestAnnotation {String value() default 默认value值;String what() default 这里是默认的what属性对应的值; }建立类测试 有些两个值都赋予了有些只赋予了一个 package com.sy.annotation.Demo2;/*** author shenyan** 获取类属性上的注解属性值*/ public class Demo2 {TestAnnotation(value 这就是value对应的值_msg1, what 这就是what对应的值_msg1)private static String msg1;TestAnnotation(这就是value对应的值1)private static String msg2;TestAnnotation(value 这就是value对应的值2)private static String msg3;TestAnnotation(what 这就是what对应的值)private static String msg4; }测试结果 2.3  案例三获取参数修饰注解对应的属性值非空注解 同样先建立一个非空注解 package com.sy.annotation;import java.lang.annotation.*;/*** author shenyan** 非空注解使用在方法的参数上false表示此参数可以为空true不能为空*/ Documented Target({ElementType.PARAMETER}) Retention(RetentionPolicy.RUNTIME) public interface IsNotNull {boolean value() default false; }建立方法进行测试 package com.sy.annotation.Demo3;import com.sy.annotation.IsNotNull;/*** author shenyan** 获取参数修饰注解对应的属性值*/ public class Demo3 {public void hello1(IsNotNull(true) String name) {System.out.println(hello: name);}public void hello2(IsNotNull String name) {System.out.println(hello: name);} } 测试类 方法1 方法2 方法3 3.AOP结合自定义注解案例 配置相关AOP  pom文件 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId/dependencyapplicationContext.xml ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/context xmlns:txhttp://www.springframework.org/schema/txxmlns:aophttp://www.springframework.org/schema/aopxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd!--1. 注解式开发 --!-- 注解驱动 --context:annotation-config/!-- 用注解方式注入bean并指定查找范围com.javaxl.ssh2及子子孙孙包--context:component-scan base-packagecom.zking/!--开启动态代理--aop:aspectj-autoproxy //beans 定义一个标志日志的注解 package com.sy.annotation;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/*** author shenyan*/Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface MyLog {String desc(); } 再创建一个切面类 LogAspect用于实现日志记录的逻辑。 package com.sy.annotation.aop;import com.sy.annotation.MyLog; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component;/*** author shenyan*/ Component Aspect public class MyLogAspect {private static final Logger logger LoggerFactory.getLogger(MyLogAspect.class);/*** 只要用到了com.javaxl.p2.annotation.springAop.MyLog这个注解的就是目标类*/Pointcut(annotation(com.sy.annotation.MyLog))private void MyValid() {}Before(MyValid())public void before(JoinPoint joinPoint) {MethodSignature signature (MethodSignature) joinPoint.getSignature();logger.debug([ signature.getName() : start.....]);System.out.println([ signature.getName() : start.....]);MyLog myLog signature.getMethod().getAnnotation(MyLog.class);logger.debug(【目标对象方法被调用时候产生的日志记录到日志表中】myLog.desc());System.out.println(【目标对象方法被调用时候产生的日志记录到日志表中】 myLog.desc());}} 在方法上运用日志注解 package com.sy.annotation.aop;import com.sy.annotation.MyLog; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;/*** author shenyan*/ Controller public class LogController {RequestMapping(/myLog)MyLog(desc 这是结合spring aop知识讲解自定义注解应用的一个案例)public void testLogAspect(){System.out.println(这里随便来点啥);} }运行结果  今日分享结束
http://www.dnsts.com.cn/news/115320.html

相关文章:

  • 网站没有关键词收录广州环保网站建设
  • 潍坊知名网站建设哪家好同城推广引流平台
  • 网站前台后台模板做网站怎么打不开localhost
  • 个人网站 百度收录企业所得税2024
  • 系统数据库与建设网站宝安做棋牌网站建设多少钱
  • 吉林省建设工程质监站网站重庆网站建设制作设计公司
  • 宣传设计网站今傲网站做的怎么样
  • 绵阳网站建设报价襄阳建设网站公司
  • 不要域名能建网站么wordpress y郁思注意
  • 网站和新媒体建设方案哪个公司网站做的最好
  • 哪家微网站做的好wordpress数据库里查看密码
  • 织梦网站内部优化mysql 注册网站
  • Wordpress一写文章就卡了网站页面优化方法
  • 南阳教育论坛网站建设石家庄哪里做网站
  • 建一个自己的网站需要多少钱怎么用vps的linux做网站
  • 红黑配色网站网站建设案例典型企业案例
  • 专业网站策划做网站沈阳本地
  • 网站开发电脑配置推荐门户网站制作价格表
  • 程序_做彩票源码网站开发wordpress小清新主题
  • 网站建设公司好发信息网网站服务器信息查询
  • 睢宁微网站开发阿里云注册域名
  • 唐山公司网站建设wordpress博客实战
  • 哪家做网站公司好广东省网站建设网站
  • 在线做爰a视频网站苏州企业网站建设公司只选亿企邦
  • 网站搭建详细步骤成功案例 品牌网站
  • 企业网站建设个人博客跨境商城网站制作
  • 和凡科网类似的网站莆田专业建站公司
  • 网页设计旅游网站南宁seo推广服务
  • 网站服务器选购音乐网站开发书籍
  • 学生网站建设首页工程建设范围