项目学习记录

项目开发

    • 创建项目
    • 环境配置
    • 关联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.mzph.cn/news/675153.shtml

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

相关文章

TCP和UDP相关问题(重点)——7.TCP的流量控制怎么实现的?

流量控制就是在双方通信时&#xff0c;发送方的速率和接收方的速率不一定是相等的&#xff0c;如果发送方发送的太快&#xff0c;接收方就只能把数据先放到接收缓冲区中&#xff0c;如果缓冲区都满了&#xff0c;那么处理不过来就只能丢弃&#xff0c;所以需要控制发送方的速率…

供应链|Managemeng Science 论文解读:数据驱动下联合定价和库存控制的近似方法 (一)

编者按 本次解读的文章发表于 Management Science&#xff0c;原文信息&#xff1a;Hanzhang Qin, David Simchi-Levi, Li Wang (2022) Data-Driven Approximation Schemes for Joint Pricing and Inventory Control Models. https://doi.org/10.1287/mnsc.2021.4212 文章在数…

测试管理_利用python连接禅道数据库并自动统计bug数据到钉钉群

测试管理_利用python连接禅道数据库并统计bug数据到钉钉 这篇不多赘述&#xff0c;直接上代码文件。 另文章基础参考博文&#xff1a;参考博文 加以我自己的需求优化而成。 统计的前提 以下代码统计的前提是禅道的提bug流程应规范化 bug未解决不删除bug未关闭不删除 db_…

闭区间上连续函数的性质【高数笔记】

1. 分几个性质 2. 每个性质的注意事项是什么 3. 每个性质适用什么类型的题型 4. 注意最值定理和正弦函数的不同 5. 做题步骤是什么

Web前端框架-Vue(初识)

文章目录 web前端三大主流框架**1.Angular****2.React****3.Vue**什么是Vue.js 为什么要学习流行框架框架和库和插件的区别一.简介指令v-cloakv-textv-htmlv-pre**v-once**v-onv-on事件函数中传入参数事件修饰符双向数据绑定v-model 按键修饰符自定义按键修饰符别名v-bind(属性…

Swift 使用 Combine 进行开发 从入门到精通七

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

DMA直接内存访问,STM32实现高速数据传输使用配置

1、DMA运用场景 随着智能化、信息化的不断推进&#xff0c;嵌入式设备的数据处理量也呈现指数级增加&#xff0c;因此对于巨大的数据量处理的情况时&#xff0c;必须采取其它的方式去替CPU减负&#xff0c;以保证嵌入式设备性能。例如SD卡存储器和音视频、网络高速通信等其它情…

排序算法的时间复杂度存在下界问题

对于几种常用的排序算法&#xff0c;无论是归并排序、快速排序、以及更加常见的冒泡排序等&#xff0c;这些排序算法的时间复杂度都是大于等于O(n*lg(n))的&#xff0c;而这些排序算法存在一个共同的行为&#xff0c;那就是这些算法在对元素进行排序的时候&#xff0c;都会进行…

Visual Studio 2010+C#实现信源编码

1. 要求 本文设计了一套界面系统&#xff0c;该系统能够实现以下功能&#xff1a; 克劳夫特不等式的计算&#xff0c;并且能够根据计算结果给出相应的信息。可通过用户输入的初始条件然后给出哈夫曼编码以及LZ编码&#xff0c;结果均通过对话框来显示哈夫曼编码结果包含相应的…

Python小白:Python 编辑器那么多种,到底怎么选!!

前言 我在刚刚接触编程的时候很纠结于这个问题&#xff0c;因为我想找一个功能强大&#xff0c;免费&#xff0c;可多平台&#xff0c;支持多种语言的编辑器&#xff0c;所以我特意花费了一些时间对 Python 的编辑器进行了调研&#xff0c;我最终选择了 VScode 作为我的首选编…

Redis 基本认识

文章目录 Redis八个特性Redis应用场景Redis应用缺陷Redis使用流程 Redis八个特性 速度快 原因: ① 单线程&#xff0c;避免了多线程竞争(如加锁/解锁)的时间开销 ② redis的数据存放在内存中 ③ 使用C语言编写&#xff0c;C语言更方便操做硬件 ④ Redis 源码优秀 利用键值对存…

【SpringBoot】JWT令牌

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;SpringBoot ⛺️稳重求进&#xff0c;晒太阳 什么是JWT JWT简称JSON Web Token&#xff0c;也就是通过JSON形式作为Web应用的令牌&#xff0c;用于各方面之间安全的将信息作为JSON对象传输…

【Git】Windows下通过Docker安装GitLab

私有仓库 前言基本思路拉取镜像创建挂载目录创建容器容器启动成功登录仓库设置中文更改密码人员审核配置邮箱 前言 由于某云存在人数限制&#xff0c;这个其实很好理解&#xff0c;毕竟使用的是云服务器&#xff0c;人家也是要交钱的。把代码完全放在别人的服务器上面&#xf…

507. Perfect Number(完美数)

题目描述 对于一个 正整数&#xff0c;如果它和除了它自身以外的所有 正因子 之和相等&#xff0c;我们称它为 「完美数」。 给定一个 整数 n&#xff0c; 如果是完美数&#xff0c;返回 true&#xff1b;否则返回 false。 问题分析 按照题目要求找出每一个因子&#xff0c…

1897_野火FreeRTOS教程阅读笔记_链表

1897_野火FreeRTOS教程阅读笔记_链表 全部学习汇总&#xff1a; g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 之前我自己通过直接啃代码的方式对FreeRTOS也算是有了一点理解了&#xff0c;这次趁着些许闲暇翻看一下野火的FreeRTOS教程。一者算是一种复习&#xff1b;二者可能对自…

Leetcode刷题笔记题解(C++):面试题 08.07. 无重复字符串的排列组合

思路&#xff1a;因为字符之间互不相同&#xff0c;故使用全排列的方式去解题&#xff1b; 字符串长度为n&#xff0c;将第一个字母分别与后面每一个字母进行交换&#xff0c;生成n种不同的全排列&#xff1b;再用第二个元素与后面每一个元素进行交换&#xff0c;生成n - 1种不…

爪哇部落算法组2024新生赛热身赛题解

第一题&#xff08;签到&#xff09;&#xff1a; 1、题意&#xff1a; 2、题解: 我们观察到happynewyear的长度是12个字符&#xff0c;我们直接从前往后遍历0到n - 12的位置&#xff08;这里索引从0开始&#xff09;&#xff0c;使用C的substr()函数找到以i开头的长度为12的字…

git flow与分支管理

git flow与分支管理 一、git flow是什么二、分支管理1、主分支Master2、开发分支Develop3、临时性分支功能分支预发布分支修补bug分支 三、分支管理最佳实践1、分支名义规划2、环境与分支3、分支图 四、git flow缺点 一、git flow是什么 Git 作为一个源码管理系统&#xff0c;…

【转载】原生社区交友婚恋视频即时通讯双端APP源码 ONE兔2.0版

原生社区交友婚恋视频即时通讯双端APP源码下载ONE兔2.0版 包含后端、H5源码源码&#xff0c;Android源码&#xff0c;IOS源码

3.4-媒资管理之视频处理+xx-job分布式任务

文章目录 媒资管理6 视频处理6.1 需求6.1.1 总体需求6.7.3 FFmpeg 的基本使用6.7.4 视频处理工具类 6.2 分布式任务处理6.2.1 什么是分布式任务调度6.2.2 XXL-JOB介绍6.2.3 搭建XXL-JOB6.2.3.1 调度中心6.2.3.2 执行器6.2.3.3 执行任务 6.2.4 分片广播 6.3 技术方案6.3.1 作业分…