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

扬州市规划建设局网站视频门户网站建设项目标书

扬州市规划建设局网站,视频门户网站建设项目标书,mysql做镜像网站,网站前端设计要做什么的需求: 自定义一个starter,里面包含一个TimeLog注解和一个TimeLogAspect切面类,用于统计接口耗时。要求在其它项目引入starter依赖后,启动springboot项目时能进行自动装配。 步骤: (1)引入pom依赖…

需求:

        自定义一个starter,里面包含一个@TimeLog注解和一个TimeLogAspect切面类,用于统计接口耗时。要求在其它项目引入starter依赖后,启动springboot项目时能进行自动装配。

步骤:

        (1)引入pom依赖

<dependencies><!-- starter想要有自动装配功能,就需要引入该依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId></dependency><!-- aop相关依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>

        (2)定义注解@TimeLog

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TimeLog {}

        @Target注解作用“对象”,这里声明注解作用在方法上。

        @Retention表示注解在运行时会被保留,可以通过反射机制读取。

        (3)定义切面类TimeLogAspect

@Aspect
@Component
public class TimeLogAspect {//切点:所有标注了TimeLog注解的方法@Pointcut("@annotation(com.hammajang.annotation.TimeLog)")public void timeConsume(){}@Around("timeConsume()")public Object doAround(ProceedingJoinPoint proceedingJoinPoint) {//开始时间long start = System.currentTimeMillis();Object result = null;try {//proceedingJoinPoint.proceed():真正的业务处理逻辑//result:业务的返回结果result = proceedingJoinPoint.proceed();} catch (Throwable e) {e.printStackTrace();}//结束时间long end = System.currentTimeMillis();System.out.println(proceedingJoinPoint.getSignature().getName() + "接口执行总耗时:" + (end - start) +"ms");return result;}
}

        @Aspect声明这是一个切面类。

        @Component声明这是一个bean,在项目启动时需要加载到Spring容器中。

        (4)定义TimeLogProperties

@ConfigurationProperties(prefix = "hammajang")
@Data
public class TimeLogProperties {/*** 日志开关*/private boolean enable;
}

        @ConfigurationProperties将配置文件中的属性绑定到 JavaBean(TimeLogProperties)中。注解声明了前缀是hammajang,获取以hammajang为前缀的所有参数进行自动匹配,赋值给类中对应的字段。

        (5)定义TimeLogAutoConfiguration

@Configuration
@ComponentScan(basePackages = "com.hammajang")
@ConditionalOnProperty(prefix = "hammajang",name = "enable",havingValue = "true")
@EnableConfigurationProperties(value = TimeLogProperties.class)
public class TimeLogAutoConfiguration {}

        @Configuration声明这是一个配置类(会被配置成bean,装载到spring容器中)。

        @ComponentScan扫描指定包路径(可以指定多个),将路径下符合要求的类对象配置成bean,装载到spring容器中。

        @ConditionalOnproperty表示配置文件中存在一个以"hammajang"为前缀的属性,属性名为"enable",当enable的值为true时(havingValue = "true"),才会将TimeLogAutoConfiguration配置类装载到spring容器中。

        @EnableConfigurationProperties启用指定配置类,value属性是一个class数组,表示可以启用多个配置类。

        (6)编译、打包starter

测试starter:

        (1)在pom文件中引入我们自定义的starter

        <dependency><groupId>com.hammajang</groupId><artifactId>my-spring-boot-starter</artifactId><version>1.0-SNAPSHOT</version></dependency>

        (2)在controller层编写测试接口

@RestController
@RequestMapping("/order")
public class OrderController {@GetMapping("/test")@TimeLogpublic String test(){try {System.out.println("测试TimeLog注解...");//模拟业务处理Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}return "success";}
}

        (3)测试@TimeLog注解是否生效

        测试结果

http://www.yayakq.cn/news/656105/

相关文章:

  • 深圳网站建设响应式中建装饰集团有限公司官网
  • 网站设计就业压力吉林平台网站建设多少钱
  • wordpress多个网站做网站最小的字体是多少
  • 网站开发费税率玩具网站的制作
  • 深圳个性化网站建设公司电话旅游网站建设规划书模块划分
  • 肇庆住房城乡建设局网站哈尔滨模板建站软件
  • 网站的登录注册怎么做谈谈对seo的理解
  • 企业网站 单页绚丽的网站欣赏
  • Dw制作个人网站iis中的网站启动不了
  • 顶尖网站建设上海自助建站企业
  • 一些私人网站设计网站接单
  • 哈尔滨网站推广服务963中华室内设计网
  • 韩都衣舍网站建设方案网页制作处理中的三剑客
  • 网站域名后缀珠海培训网站建设
  • 企业做网站流程广告策划活动公司
  • 做网站购买服务器多少钱云浮头条新闻
  • 移动端网站排名中国能源建设集团有限公司招标网
  • 网站开发对显卡的要求做网站哪些
  • php网站建设价格seo整合营销
  • 深圳家居网站建设公司百度竞价排名什么意思
  • 昆明企业网站的建设互联网平台怎么建立
  • 精品网站欣赏北京最富裕的三个区
  • 网站平台方案wordpress如何防止ddos
  • 淘客采集网站怎么做的wordpress密码爆破
  • 哪些网站可以做微商品牌宣传wordpress用户前端发文
  • 移动网站建设作业长沙网站建设工作室
  • 铜川网站建设报价怎么利用公司网站开发客户
  • 成都市城乡建设网站中国建设银行电脑版
  • 政务门户网站建设信息短视频网站如何做推广
  • seo 网站推广山东网站建设是什么