当前位置:   article > 正文

一、微服务(zuul+swagger+aop)+Vue项目构建_vue zuul

vue zuul

前言:虽然自己一直在做微服务的项目,但是对于项目构建没有一个具体的概念,也不太清楚每个配置、控件的作用,以此通过搭建一个基础框架,来学习了解。通过理论来进行实践。

目的:理论可以应付面试,实践可以感悟思想。

基础知识感悟:

搭建参考博客就行了,

Idea 创建 SpringCloud 项目 - 程序员大本营

搭建SpringCloud项目,并实现自动化部署_Royi的博客-CSDN博客_搭建springcloud项目

【springcloud】简单创建一个springcloud项目 - xiaostudy - 博客园

我想要的是eureka+zuul的微服务,就简单的两个服务:

1.首先我在父pom引入用boot的东西,这样很多东西都直接引入了,其中spring-boot-starter-web就解决版本问题了,但是在子pom又造成版本spring-cloud.version不对,改成Greenwich.RELEASE

2.父级的dependencies是所有子项目都会引入的包,加dependencyManagement,变成了私有的,要优雅。

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>2.1.2.RELEASE</version>
  5. <relativePath/> <!-- lookup parent from repository -->
  6. </parent>

3.在子pom的引入中,使用父pom的配置,意思就是用父pom

  1. <parent>
  2. <groupId>org.hundsun</groupId>
  3. <artifactId>cloudsample</artifactId>
  4. <version>1.0-SNAPSHOT</version>
  5. <relativePath/> <!-- lookup parent from repository -->
  6. </parent>

4.正常搞zuul就得了,很多东西总是出错才能知道哪里自己没有理解,但是下次还是会忘记,因为不经常做,所以呢这种的要记录

5.之后新建了一个公共模块,需要在使用到他的模块引入依赖即可,注意启动类

EnableFeignClients这里,写扫描那个公共的类
(basePackages = "com.hundsun.demo_commons.feign")

6.之后配置了个swagger,配置完了发现无法访问,其实不必奇怪,有些博客写的是boot的,微服务得加上模块路由,另外有个404的问题,需要给他加个过滤器允许。

不过留下了个问题:

正常的配置完了swagger,访问如下:我在zuul加了servlet: context-path:/zuul,别的服务没有配置

普通:http://localhost:1013/swagger-ui.html(其他服务没有配置别名,不需要加)

zuul:http://localhost:1020/zuul/swagger-ui.html(我在zuul配置了servlet: context-path:/zuul,别的服务没有配置),访问的时候不用配置各服务的名字,都是默认的,

swagger中在zuul请求方式中,就不能访问到各个模块的,因为他不能自动给我加上服务名路由:/oneserve,他加的是服务的原名称,我不知道为啥不加别名,要是加上别名就可以,多启动几次又可以了

但是访问方法的时候,普通访问localhost:1014/testtwocon/getverygood,就好像端口代表了服务。

zuul访问localhost:1020/zuul/serviceTwo/testtwocon/getverygood,或者localhost:1020/zuul/service-two/testtwocon/getverygood

zuul访问需要加上服务名,应该是在zuul路由配置的原因,但是swagger为啥不给加呢。。

加入自定义注解,用于记录操作

  1. //意思是什么时候失效,现在运行成class时还会存在的
  2. @Retention(RetentionPolicy.RUNTIME)
  3. //影响范围
  4. @Target({ElementType.METHOD})
  5. //没啥用,生成javadoc文档的时候是否存在这个注解
  6. @Documented
  7. public @interface LogAnnotation {
  8. //模块名称
  9. String moudleName() default "";
  10. //操作内容
  11. String option() default "";
  12. }

定义切面,以及切面的操作

  1. @Aspect
  2. @Component
  3. public class LogInterceptor {
  4. /**
  5. * 定义在哪切入,现在意思是在写了这个注解的地方切入
  6. */
  7. @Pointcut("@annotation(com.hundsun.demo_commons.annotation.LogAnnotation)")
  8. public void userManagerPointcut(){
  9. }
  10. //定义切入之后干啥
  11. @After("userManagerPointcut()")
  12. public void afterLog(JoinPoint joinPoint) throws NoSuchMethodException {
  13. //用的最多通知的签名
  14. Signature signature = joinPoint.getSignature();
  15. MethodSignature msg=(MethodSignature) signature;
  16. Object target = joinPoint.getTarget();
  17. //获取注解标注的方法
  18. Method method = target.getClass().getMethod(msg.getName(), msg.getParameterTypes());
  19. //通过方法获取到自定义的注解
  20. LogAnnotation annotation = method.getAnnotation(LogAnnotation.class);
  21. //记录日志 看实际情况,日志存表入库,本来这里是对数据库的操作
  22. DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  23. System.out.println(format.format(new Date())
  24. + " " + annotation.moudleName() + " " + annotation.option());
  25. }
  26. }

怎样都切不到,我又加了依赖啥的,这里是共同部分写的,用哪种方式都不能切入

最后在子模块写了切面,怎么切都能入

git安装以及连接远程仓库,参考地址:

Gitee码云托管中心注册以及git安装使用 - 咸菜缸缸 - 博客园

如何解决error: failed to push some refs to ‘https://gitee.com/_寒雨如鸦-CSDN博客

还可以看一下gitee的git操作,里面的教程也很详细

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/457467
推荐阅读
相关标签
  

闽ICP备14008679号