项目学习记录

项目开发

    • 创建项目
    • 环境配置
    • 关联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.mfbz.cn/a/380629.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

猫头虎分享已解决Bug || CPU过载(CPU Overload):HighCpuUsageWarning, CpuOverloadException

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

vue3 之 商城项目—一级分类

整体认识和路由配置 场景&#xff1a;点击哪个分类跳转到对应的路由页面&#xff0c;路由传对应的参数 router/index.js import { createRouter, createWebHashHistory } from vue-router import Layout from /views/Layout/index.vue import Home from /views/Home/index.vu…

linux 06 磁盘管理

01.先管理vm中的磁盘&#xff0c;添加一个磁盘 只有这种方式才可以增加/dev/sd* 中的目录 例如会增加一个sdc 第一步.vm软件&#xff0c;打开虚拟机设置&#xff0c;添加硬盘 第二步.选择推荐scsi 第三步.创建一个新的虚拟磁盘 第四步. 第五步. 02.在创建好的vm虚拟机中查…

automative

car sevice car-lib

html5+css3胶囊按钮代码

效果 代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title></title> <style> /* 胶囊开关的样式 */ .switch { position: relative; display: inline-block; width: 6…

【leetcode热题100】最大矩形

给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵&#xff0c;找出只包含 1 的最大矩形&#xff0c;并返回其面积。 示例 1&#xff1a; 输入&#xff1a;matrix [["1","0","1","0","0"],["1",&quo…

文件绕过-Unsafe Fileuoload

文件上传基础 什么是文件上传 将客户端数据以文件形式封装通过网络协议发送到服务器端&#xff0c;在服务器端解析数据&#xff0c;最终在服务端硬盘上作为真实的文件保存。 通常一个文件以HTTP协议进行上传时&#xff0c;将以POST请求发送至Web服务器&#xff0c;Web服务器…

1987-2022年各省进出口总额数据整理(含进口和出口)(无缺失)

1987-2022年各省进出口总额数据整理&#xff08;含进口和出口&#xff09;&#xff08;无缺失&#xff09; 1、时间&#xff1a;1987-2022年 2、来源&#xff1a;各省年鉴、统计公报 3、指标&#xff1a;进出口总额&#xff08;万美元&#xff09;、进口总额&#xff08;万美…

2009-2019年地级市分类转移支付数据

2009-2019年地级市分类转移支付数据 1、时间&#xff1a;2009-2019年 2、来源&#xff1a;整理自wind 3、指标&#xff1a;公共财政收入:返还性收入、公共财政收入:一般性转移支付收入、公共财政收入:专项转移支付收入 4、范围&#xff1a;280个地级市 5、指标解释&#x…

Windows - URL Scheme - 在Windows上无管理员权限为你的程序添加URL Scheme

Windows - URL Scheme - 在Windows上无管理员权限为你的程序添加URL Scheme What 想不想在浏览器打开/控制你的电脑应用&#xff1f; 比如我在浏览器地址栏输入wegame://后回车会提示是否打开URL:wegame Portocol。 若出现了始终允许选项&#xff0c;你甚至可以写一个Web界面…

高效测试利器:Jmeter+Ant+Jenkins定时监控接口揭秘!

基于JmeterantJenkins的接口性能监控框架 Jenkins的安装和配置 简介 部署到持续集成平台可以实现脚本的定时运行&#xff0c;这是接口测试的核心。 这里我们选用了jenkins,jenkins是一个强大的持续集成系统&#xff0c;使用起来也很简单。 使用步骤如下&#xff1a; 1、 安装…

Redis核心技术与实战【学习笔记】 - 23.Redis 主从切换故障,有哪些坑

前言 Redis 的主从同步机制不仅可以让从库服务更多的读请求&#xff0c;分担主库的压力&#xff0c;而且还能在主库发生故障时&#xff0c;进行主从库切换&#xff0c;提供高可靠服务。 不过&#xff0c;在实际使用主从机制时会踩到一些“坑”&#xff1a;主从数据不一致、读…

保育员怎么搜题答案?用这5款神器就够了!!! #媒体#笔记#知识分享

专供大学生使用的搜题神器&#xff0c;支持拍照搜题、文字搜题、语音搜题等多种搜题方式&#xff0c;能快速找到课本习题的题目答案&#xff0c;而且还会附带详细的答案解析&#xff0c;加深我们对题目的理解。 1.大鱼搜题 这是一个公众号 适合大学生&#xff0c;基本上网课…

动漫风博客介绍页面源码

动漫风博客介绍页面源码&#xff0c;HTML源码&#xff0c;图片背景有淡入切换特效 蓝奏云&#xff1a;https://wfr.lanzout.com/iIDZu1nrmjve

清理神器CleanMyMac X 空间透镜——可视化您的磁盘空间 空间透镜有什么用

不久前&#xff0c;CleanMyMac X 发布了一个新功能&#xff1a; 空间透镜 相信有非常多的小伙伴和小编一样&#xff0c; 对这个功能一脸问号 这啥玩意儿&#xff1f;&#xff1f;&#xff1f; 今天就让我们深入了解一下&#xff0c; CleanMyMac X 的空间透镜功能。 - 更好…

【汇编】简单的linux汇编语言程序

一、Linux系统汇编语言 Linux系统上的汇编语言可以使用不同的语法风格&#xff0c;主要包括Intel语法和AT&T语法。这两种语法有各自的特点和风格区别&#xff0c;尽管它们表示的底层机器指令相同。下面分别对两种语法进行简要说明&#xff1a; Intel语法 Intel语法是由I…

《MySQL 简易速速上手小册》第10章:未来趋势和进阶资源(2024 最新版)

文章目录 10.1 MySQL 在云计算和容器化中的应用10.1.1 基础知识10.1.2 重点案例&#xff1a;使用 Python 部署 MySQL 到 Kubernetes10.1.3 拓展案例 1&#xff1a;在 AWS RDS 上部署 MySQL 实例10.1.4 拓展案例 2&#xff1a;使用 Docker 部署 MySQL 10.2 MySQL 和 NoSQL 的整合…

Web课程学习笔记--JavaScript操作DOM常用的API

JavaScript操作DOM常用的API 1 什么是DOM 文档对象模型 (DOM) 是HTML和XML文档的编程接口。它提供了对文档的结构化的表述&#xff0c;并定义了一种方式可以使从程序中对该结构进行访问&#xff0c;从而改变文档的结构&#xff0c;样式和内容。 文档对象模型 (DOM) 是对HTML文…

基于BiLSTM-CRF模型的分词、词性标注、信息抽取任务的详解,侧重模型推导细化以及LAC分词实践

基于BiLSTM-CRF模型的分词、词性标注、信息抽取任务的详解,侧重模型推导细化以及LAC分词实践 1.GRU简介 GRU(Gate Recurrent Unit)门控循环单元,是[循环神经网络](RNN)的变种种,与 LSTM 类似通过门控单元解决 RNN 中不能长期记忆和反向传播中的梯度等问题。与 LSTM 相…

一文带你读懂JSON模块

json模块 JSON (JavaScript Object Notation)&#xff1a;是一个轻量级的数据交换格式模块&#xff0c;受javascript对象文本语法启发&#xff0c;但不属于JavaScript的子集。 常用方法&#xff1a; dump(obj,fp)&#xff1a;将对象以字符串的形式写入文件中。 load(fp)&am…
最新文章