项目学习记录

news2024/11/17 21:53:19

项目开发

    • 创建项目
    • 环境配置
    • 关联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.coloradmin.cn/o/1443450.html

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

相关文章

css2复合选择器

一.后代&#xff08;包含&#xff09;选择器&#xff08;一样的标签可以用class命名以分别&#xff09; 空格表示 全部后代 应用 二.子类选择器 >表示 只要子不要孙 应用 三.并集选择器 &#xff0c;表示 代表和 一般竖着写 应用 四.伪类选择器&#xff08;包括伪链接…

【C++】类和对象(2)

这篇博客继续学习类和对象~&#xff0c;主要介绍了类的6个默认成员函数。 目录 类的6个默认成员函数 构造函数 概念 特性 析构函数 概念 特性 拷贝构造函数 特性 赋值运算符重载 运算符重载 赋值运算符重载 前置和后置重载 日期类的实现 const成员 取地址及cons…

【十三】【C++】vector简单实现

代码实现 /*vector类简单实现*/ #if 1 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std; #include <vector> #include <algorithm> #include <crtdbg.h> #include <assert.h> #include <string.h>namespace MyVe…

SpringBoot循环依赖

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; SpringBoot循环依赖 循环依赖是指两个或多个模块或组件之间相互依赖形成闭环的情况。这种情况下&#xff0c;模块 A 依赖于模块 B&#xff0c;同时模块 B 也依赖于模块…

解析十六进制雷达数据格式:解析雷达数据类型。

以Cat62格式雷达数据为例&#xff0c;十六进制雷达数据部分代码&#xff1a; 3e0120bf7da4ffee0085 雷达数据使用2个字符&#xff08;1个字节&#xff09;标识&#xff0c;在这里是“3e”&#xff0c;转换为十进制数为62。 雷达数据类型父类&#xff1a; base_header_process…

openkylin(Debian系)安装nginx及安装前需要的准备

前言 现在很多linux系统都可以使用高级包管理工具安装软件了&#xff0c;但是在像是 openkylin这些新系统中&#xff0c;好多软件包虽然有&#xff0c;但是因为其依赖的包还没有做好&#xff0c;所 以安装会提示你一大堆依赖错误。所以还是要自己来编译安装咯。安装前准备&…

计算机网络之一

目录 1.因特网概述 1.1网络、互连网&#xff08;互联网&#xff09;和因特网 1.2.因特网发展的三个阶段 1.3基于ISP的三层架构的因特网 1.4.因特网的组成 2.三种交换方式 2.1电路交换 2.2分组交换 1.因特网概述 1.1网络、互连网&#xff08;互联网&#xff09;和因特网…

米贸搜|Facebook在购物季使用的Meta广告投放流程

一、账户简化 当广告系列开始投放后&#xff0c;每个广告组都会经历一个初始的“机器学习阶段”。简化账户架构可以帮助AI系统更快获得广告主所需的成效。例如&#xff1a; 每周转化次数超过50次的广告组&#xff0c;其单次购物费用要低28%&#xff1b;成功结束机器学习阶段的…

13. 串口接收模块的项目应用案例

1. 使用串口来控制LED灯工作状态 使用串口发送指令到FPGA开发板&#xff0c;来控制第7课中第4个实验的开发板上的LED灯的工作状态。 LED灯的工作状态&#xff1a;让LED灯按指定的亮灭模式亮灭&#xff0c;亮灭模式未知&#xff0c;由用户指定&#xff0c;8个变化状态为一个循…

中创ET4410 台式LCR数字电桥 简单开箱测评

最近买了一台LCR电桥&#xff0c;完善一下自己实验室的设备&#xff0c;选了中创ET4410&#xff0c;这款性价比高一点。 1199元在PDD买的&#xff0c;好像胜利的VC4090C也是找中创代工的。 ET4410介绍 本系列LCR数字电桥是采用自动平衡电桥原理设计的元件参数分析仪&#xf…

linux进程(环境变量)

目录 正文&#xff1a; 常见环境变量 和环境变量相关的的命令 通过代码获取环境变量 主函数参数 三个参数 参数调用 进程优先级 查看系统进程 PRI和NI 优先级修改 前言&#xff1a; 环境变量 (environment variables) 一般是指在操作系统中用来指定操作系统运行环境…

第68讲表单验证实现

表单验证实现 Form 组件允许你验证用户的输入是否符合规范&#xff0c;来帮助你找到和纠正错误。 Form 组件提供了表单验证的功能&#xff0c;只需为 rules 属性传入约定的验证规则&#xff0c;并将 form-Item 的 prop 属性设置为需要验证的特殊键值即可。 const rulesref({u…

掌握Pandas数据筛选方法与高级应用全解析【第70篇—python:数据筛选】

文章目录 掌握Pandas&#xff1a;数据筛选方法与高级应用全解析1. between方法2. isin方法3. loc方法4. iloc方法5. 查询复杂条件的结合应用6. 避免inplace参数7. 利用Lambda函数进行自定义筛选8. 处理缺失值9. 多条件排序10. 数据统计与分组 总结&#xff1a; 掌握Pandas&…

NLP_引入注意力机制

文章目录 点积注意力创建两个张量x1和x2计算张量点积&#xff0c; 得到原始权重对原始权重进行归一化求出注意力分布的加权和 缩放点积注意力编码器-解码器注意力定义Attention类重构Decoder类重构Seq2Seq类可视化注意力权重 注意力机制中的 Q、K、V自注意力多头自注意力注意力…

Excel——重复项处理

一、高亮重复项 选择需要高亮重复项的列/单元格 选择【数据】——【重复项】—— 【高亮重复项】 如果高亮重复项的数据较长&#xff0c;例如&#xff1a;身份证号、银行卡&#xff0c;可以勾选下列选项&#xff0c;能够精准检查重复项。 结果如下所示 如果想要清除高亮的重复…

Java并发基础:ArrayBlockingQueue全面解析!

内容摘要 ArrayBlockingQueue类是一个高效、线程安全的队列实现&#xff0c;它基于数组&#xff0c;提供了快速的元素访问&#xff0c;并支持多线程间的同步操作&#xff0c;作为有界队列&#xff0c;它能有效防止内存溢出&#xff0c;并通过阻塞机制平衡生产者和消费者的速度…

【Qt 学习之路】在 Qt 使用 ZeroMQ

文章目录 1、概述2、ZeroMQ介绍2.1、ZeroMQ 是什么2.2、ZeroMQ 主线程与I/O线程2.3、ZeroMQ 4种模型2.4、ZeroMQ 相关地址 3、Qt 使用 ZeroMQ3.1、下载 ZeroMQ3.2、添加 ZeroMQ 库3.3、使用 ZeroMQ3.4、相关 ZeroMQ 案例 1、概述 今天是大年初一&#xff0c;先给大家拜个年&am…

c++2024寒假J312实战班2.4

长话短说&#xff0c;简明扼要一直是我的行事风格&#xff0c;如有不精准的地方&#xff0c;就到网上去搜&#xff0c;好吧。 今天分享我们做的四道题&#xff0c;都挺简单的&#xff0c;就是难思考。 题目列表&#xff1a; 1.Maximum Subarray Sum 2.分解因数 3.公交换乘 4.…

05-Java原型模式 ( Prototype Pattern )

原型模式 摘要实现范例 原型模式&#xff08;Prototype Pattern&#xff09;是用于创建重复的对象&#xff0c;同时又能保证性能原型模式实现了一个原型接口&#xff0c;该接口用于创建当前对象的克隆当直接创建对象的代价比较大时&#xff0c;则采用这种模式 例如&#xff0c…

用bootstrap结合jQuery实现简单的模态对话框

嗨害嗨&#xff0c;我又来了奥。今天呢&#xff0c;给大家分享一个工作中常用到的插件——模态对话框的用法。想必大家在工作中也遇到很多页面&#xff0c;需要用模态对话框进行交互的吧&#xff0c;现在呢&#xff0c;就让我们一起来了解一下它的使用吧。 首先&#xff0c;我…