项目学习记录

项目开发

    • 创建项目
    • 环境配置
    • 关联git
    • 新增模块
    • 项目启动打印地址日志
    • 使用httpclient进行idea内部控制台测试
    • 使用AOP拦截器打印日志

创建项目

创建一个空项目,并勾选下面选项

在这里插入图片描述
然后进入pom.xml中修改项目配置
根据这个链接选则,修改项目的支持版本
链接:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
在这里插入图片描述
因为项目是springboot3版本以上的,所以选则按照第一个中的配置进行配。
修改parent标签中的版本为图所示。
在这里插入图片描述
修改springcloud版本为图所示
在这里插入图片描述
ps:修改完了就可以在maven管理中有个刷新的按键,进行版本配置刷新,或者说idea退了重进,就会自动刷新。

然后点击src目录下的@SpringBootApplication,点击run,只要能执行就可以了
在这里插入图片描述

环境配置

首先进行项目配置
seetings——搜索encode,弹出下面这个界面——点击console
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d268883b560e4bbab7ad93c64964a545.png在这里插入图片描述
修改编码设置
在这里插入图片描述
然后进入file encoding进行编码修改
在这里插入图片描述
然后点击应用apply一下

接着进行修改,在seetings里面搜auto import接着进行勾选
在这里插入图片描述
接着搜compiler进行自动编译
在这里插入图片描述

关联git

可以用自己常用的平台进行关联(如github或者gitee),这里需要一些有关于git的基本操作前缀知识。熟悉git status查看目录,git commit提交,git push推送等,以及一些关于怎么生成ssh密匙等操作。

新增模块

创建一个空的maven项目,然后将主pom中的前面的插件依赖换入新建的模块中去,并将buid模块中的一并插入新建模块的pom文件中

  <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin>省略</plugin></plugins></build>

并将resourse文件下的,application.properties文件内容,进行内容编写,修改系统打开的端口号

server.port=你想常用的端口号,只要不是8080就行,因为这个太常用了。

项目启动打印地址日志

在我们run启动项目的时候,我们可以不可以在控制台输出一句话,项目启动成功,然后给出一个项目的本地的网址出来,这样项目启动好了,我们可以直接点控制台上的链接就自动跳转到浏览器去看项目的效果怎么样。
在这里插入图片描述
应该怎么写呢?
这时候就用到了cv操作。将下面的代码进行复制,然后根据每个项目的不同,在每个启动类applcation中只修改下类名就行
private static final Logger LOG= LoggerFactory.getLogger(类名.class); public static void main(String[]args){ SpringApplication app=new SpringApplication(类名.class); Environment env=app.run(args).getEnvironment(); LOG.info("启动成功!!"); LOG.info("地址:\thttp://127.0.0.1:{}",env.getProperty("server.port")); }

注意:前面这张图可能最终打印出来的地址有的人点的时候打不开那么我们就可以根据你在controller中的写的路由地址

   @GetMapping("/路由地址.com")

然后将路由地址带入到这里的LOG.info输出信息中,修改为

地址:\thttp://127.0.0.1:{}/路由地址.com

接下来就是在application.properties文件中进行修改
server.servlet.context-path=/模块名
这一步的操作是我们在用mapping的路径进行访问的时候,我们必须在访问路径前添一个模块名才能进行接着的访问。
比如原来可以直接通过这个进行访问

http://127.0.0.1:8001/路由地址

但是现在在配置文件中修改了server服务,我们必须下面这样才能接着访问

http://127.0.0.1:8001/模块名/路由地址

这一步的作用是为了方便做后续的路由转发,在网关模块里,将接口带/某个模块的请求都转发到这个模块里。(可以抽象比喻,某个模块等于某个年级,比如小学五年级,然后路由地址等于某个班里的具体某个人,当我想找五年级一班的某个人时,我首先是找到五年级的这个年级内,然后根据具体的路由,比如三班王小明就能找到这么一个具体的人,然后用网址,http://127.0.0.1:自定义端口号/五年级/三班/王小明就找到具体的人了)

修改一下idea中项目的访问路径
首把打印地址日志的代码修改一下
将最初的代码

 LOG.info("地址:\thttp://127.0.0.1:{}",env.getProperty("server.port"));

在这里插入图片描述

修改为下面的这种情况,这里的{ }花括号表示占位符,意思就是把后面env.getProperty()中的内容显示在占位符{ }中

  LOG.info("地址:\thttp://127.0.0.1:{}{}/hello",env.getProperty("server.port"),env.getProperty("server.servlet.context-path"));

在这里插入图片描述

使用httpclient进行idea内部控制台测试

项目每次需要我们跳转到chorm浏览器或者和edge浏览器去手动输入localhost等等来访问,比较麻烦,那么有没有一种更简单的操作,可以直接就在idea内部就能像浏览器那样访问,输出的结果自动显示在idea内部的工作台上呢?
答案是肯定有这样的操作,接下来就是介绍httpclient这个idea中带有的操作。

打开idea——我们找到tool菜单下——httpclient——然后点击创建httpclient
在这里插入图片描述
然后就帮我们生成了一个下面这个东西
在这里插入图片描述
然后将它帮我们生成的这个路径,你需要做的,就是将这个http请求路径修改成你启动springboot项目后平时在chorm浏览器上访问的路径
然后再项目运行哈了就是。
(这里显示输出了hello world就表示可以在本地访问)
在这里插入图片描述
在之后的项目开发中我们如果想就在本地idea的内部就进行测试的话,可以在我们的项目模块里创建个文件夹专门来存这个访问测试文件。(注意这里的测试文件是以xxx.http结尾的文件后缀)

然后在这个文件内部可以手动写个gtr
(注意看,这里有两个请求,一个是gtr表示GET不带参数的请求,一个是gtrp表示GET的访问路径是带参数的,这个什么意思呢?就是我们在访问一些网站路径的时候,可能有些网站后缀有123类似的数字。)
在这里插入图片描述

使用AOP拦截器打印日志

我们的项目不能是启动了就成功了不管了,我们应该给项目的启动运行分别加上日志,显示每一步怎么了怎么了,这样后期在检查报错的的时候,我们就知道应该改哪个地方的代码。

常见的日志操作,就是在我们的controller层比如GETMapping之前设一个日志,表示项目启动然后return之前加个日志表示项目运行然后再最后面加个项目结束之类的日志。但是这样的操作实在是太太太烦琐了,特别是后期代码多的时候,根本不知道哪个代码是什么。

那么有没有一种更方便的东西来记录日志信息呢?答案是显然的,这里就介绍到了AOP请求。

 <dependency>aop依赖<groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>

增加两个拦截器

 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId></dependency>

一个注意点:使用@Component加注解的类,会在不同包下被扫描到。什么意思呢?就是之前的类文件我们是放在同一个包下进行扫描的,所以就不会出现报错。现在是将类分别放到不同的包下,所以某个要用到的类,就需要在上头加个component注解

 @Pointcut("execution(public * com.xiqi..*Controller.*(..))")//*com.xiqi这一句表示在com.xiqi..*Controller这个路径下,所有的controller都能被拦截到,都能生效。而这里的.*(..)则表示controller类下所有的方法和任意的参数都能拦截。public void controllerPointcut() {}
  @Before("controllerPointcut()")public void doBefore(JoinPoint joinPoint) {
//这段代码表示前置通知,意思就是在我们想要拦截的controller类中定义的方法执行前就通过调用了这个方法,然后就开始打印日志了,他的作用等于在项目的方法运行前就打印日志表示项目启动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/465415.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【精选】java多态进阶——多态练习测试

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏…

C++学习笔记 | 基于Qt框架开发实时成绩显示排序系统1

目标&#xff1a;旨在开发一个用户友好的软件工具&#xff0c;用于协助用户基于输入对象的成绩数据进行排序。该工具的特色在于&#xff0c;新输入的数据将以红色高亮显示&#xff0c;从而直观地展现出排序过程中数据变化的每一个步骤。 结果展示&#xff1a; 本程序是一个基于…

Linux--基础开发工具篇(2)(vim)(配置白名单sudo)

目录 前言 1. vim 1.1vim的基本概念 1.2vim的基本操作 1.3vim命令模式命令集 1.4vim底行命令 1.5 异常问题 1.6 批量注释和批量去注释 1.7解决普通用户无法sudo的问题 1.8简单vim配置 前言 在前面我们学习了yum&#xff0c;也就是Linux系统的应用商店 Linux--基础开…

C#,卢卡斯数(Lucas Number)的算法与源代码

1 卢卡斯数&#xff08;Lucas Number&#xff09; 卢卡斯数&#xff08;Lucas Number&#xff09;是一个以数学家爱德华卢卡斯&#xff08;Edward Lucas&#xff09;命名的整数序列。爱德华卢卡斯既研究了这个数列&#xff0c;也研究了有密切关系的斐波那契数&#xff08;两个…

【十四】【C++】list 的常见用法

list 的初始化和遍历 /*list的初始化和遍历*/ #if 1 #include <list> #include <vector> #include <iostream> #include<algorithm> using namespace std;void TestList1(){list<int> L1;list<int> L2(10, 5);vector<int> v{1,2,3,4…

【Tauri】(1):使用Tauri1.5版本,进行桌面应用开发,在windows,linux进行桌面GUI应用程序开发,可以打包成功,使用 vite 最方便

1&#xff0c;视频地址&#xff1a; https://www.bilibili.com/video/BV1Pz421d7s4/ 【Tauri】&#xff08;1&#xff09;&#xff1a;使用Tauri1.5版本&#xff0c;进行桌面应用开发&#xff0c;在windows&#xff0c;linux进行桌面GUI应用程序开发&#xff0c;可以打包成功&…

前端面试题——二叉树遍历

前言 二叉树遍历在各种算法和数据结构问题中都有广泛的应用&#xff0c;如二叉搜索树、表达式的树形表示、堆的实现等。同时也是前端面试中的常客&#xff0c;掌握好二叉树遍历算法对于一名合格的前端工程师来说至关重要。 概念 二叉树遍历&#xff08;Binary Tree Traversa…

synchronized关键字以及底层实现

目录 基本使用 底层实现 synchronized锁升级 对象的内存结构 ⅰ. 对象头 1. ① 运行时元数据 (Mark Word) (占64位) a. 哈希值 (HashCode) b. GC分代年龄 c. 锁状态标记 2. ② 类型指针: (Klass Point) (占 32位) ⅱ. 实例数据 ⅲ. 对齐填充 Moniter重量级锁 轻量…

Linux第46步_通过“添加自定义菜单”来学习menuconfig图形化配置原理

通过“添加自定义菜单”来学习menuconfig图形化配置原理&#xff0c;将来移植linux要用到。 自定义菜单要求如下: ①、在主界面中添加一个名为“My test menu”&#xff0c;此菜单内部有一个配置项。 ②、配置项为“MY TESTCONFIG”&#xff0c;此配置项处于菜单“My test m…

Python 函数式编程进阶:map、filter、reduce

Python 函数式编程进阶&#xff1a;map、filter、reduce 介绍map 函数作用和语法使用 map 函数Lambda 函数的配合应用 filter 函数作用和语法使用 filter 函数Lambda 函数的结合运用 reduce 函数作用和语法使用 reduce 函数典型应用场景 介绍 在函数式编程中&#xff0c;map、…

联想thinkpad-E450双系统升级记

早期笔记本联想thinkpad-E450双系统 大约16年花4000多大洋&#xff0c;买了一台thinkpad-E450屏幕是16寸本&#xff0c;有AMD独立显卡&#xff0c;i5cpu&#xff0c;4G内存。 . 后来加了一个同型号4G内存组成双通道&#xff0c; . 加了一个三星固态500G&#xff0c; . 换了一个…

2.10日学习打卡----初学RocketMQ(一)

2.10日学习打卡 对于MQ(Message queue)消息队列的一些解释可以看我原来写的文章 初学RabbitMQ 各大MQ产品比较 一.RocketMQ概述 发展历程 RocketMQ概念术语 生产者和消费者 生产者负责生产消息&#xff0c;一般由业务系统负责生产消息&#xff0c;消费者即后台系统&…