项目开发
- 创建项目
- 环境配置
- 关联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类中定义的方法执行前就通过调用了这个方法,然后就开始打印日志了,他的作用等于在项目的方法运行前就打印日志表示项目启动。