回顾maven项目的spring boot相关知识点
2021新年快乐!
在参加完研究生考试后,感觉像是放下了一个大负担,但并不能就此以为什么都结束了。反而,当我今天去看了一下之前老师带领我们班级做的一个maven项目,感觉像是第一次看到这个,十分陌生。这对于敲代码的人来讲是十分危险的信号,所以要趁早亡羊补牢,把遗忘的东西补一补。就此,我决定回顾这个让我感到陌生的maven项目用到的有关的spring boot的知识点。
1.@RestController。
通过对网上这篇博客的的学习(https://www.cnblogs.com/yaqee/p/11256047.html),我大致了解到了在Spring中@RestController的作用等同于@Controller + @ResponseBody。而@Controller注解的作用是通过在一个类上添加@Controller注解,表明了这个类是一个控制器类,并且还需要在该类中添加注解@RequestMapping;而@ResponseBody表示方法的返回值直接以指定的格式写入Http response body中,而不是解析为跳转路径。所以@RestController注解的作用大致就是将被注解的类设置为一个控制类,是用于spring boot项目中创建controller类所需要的,且一般要与@RequestMapping(后面会讲到)联用,且支持快捷的返回一个JSON对象。然后@RestController的使用方法和代码如下:
1 @RestController
2 @RequestMapping("/checkgroup") //映射到带有参数“checkgroup”的页面
3 public class CheckGroupController { //表明这个类是一个控制类
4 XXXXX5 }
2.@RequestMapping
通过对网上这篇博客的学习(https://blog.csdn.net/qq_41425382/article/details/100123183)我学习到@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径,简单来说,就是在页面上标有此映射的功能和参数都会直接传到被映射的函数里面执行。且它的属性和对应的作用如以下所示:
- value:用于指定请求的 URL。它和 path 属性的作用是一样的。
- method:用于指定请求的方式。
- params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的 key 和 value 必须和 配置的一模一样。
且如果是用于方法上,则是请求 URL 的第二级访问目录,在使用的时候需要以/开头。 它出现的目的是为了使我们的 URL 可以按照模块化管理。
举个例子(用他人的),将@RequestMapping注解分别注释在类和方法上,所以在前端写链接的时候要写完全的路径(类上标签的路径+方法标签上的路劲)
控制器的代码块:
1 @RequestMapping("/account")
2 public class AccountController {
3 @RequestMapping("/findAccount")
4 public String findAccount() {
5 System.out.println("查询了账户。。。。");
6 return "success";
7 }
8 }
JSP中的代码块
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4 <title>requestmapping 的使用</title>
5 </head>
6 <body>
7 <!-- 第一种访问方式 -->
8 <a href="${pageContext.request.contextPath}/account/findAccount">
9 查询账户
10 </a>
11 <br/>
12 <!-- 第二种访问方式 -->
13 <a href="account/findAccount">查询账户</a>
14 </body>
15 </html>
3.@Reference
@Reference是dubbo的注解,也是注入,他一般注入的是分布式的远程服务的对象,需要dubbo配置使用。除此之外的注入注解还有@Autowired(SpringBoot项目中常用。简单来说就是引入由Spring容器管理的bean)和@resource(作用相当于@Autowired,只不过@Autowired是byType自动注入,而@Resource默认byName自动注入),而spring中的依赖注入是spring的的两大核心之一,也叫控制反转,他的作用是将创建对象的管理交给spring容器,以前写项目会用new people的方式来创建一个people类,现在用了spring后,可以在xml中配置,也可以用注解的方式,在class文件开始部分写下面的代码,然后在这个class文件中使用到people就可以直接用people,而不需要用new来创建了,这样也大大降低了耦合性。
然后这篇博客仔细讲解了有依赖注入和无依赖注入的差别,具体就不再细述:https://blog.csdn.net/chongbin007/article/details/103064932
然后列举一些如何使用@Reference
1 @Reference
2 private CheckGroupService checkGroupService;
4.@PreAuthorize
@PreAuthorize是Spring Security权限访问的一个注解,需要在设置好Spring Security的相关配置后,此注解才起作用。具体使用方法我暂时还没有搞懂,故先暂时搁置。
5.@Component
这个注解是我第一次看见,且网上的知识很多是相似的,故转载一篇博客以供参考:https://www.cnblogs.com/w-essay/p/11493023.html
1、@controller 控制器(注入服务)
用于标注控制层,相当于struts中的action层
2、@service 服务(注入dao)
用于标注服务层,主要用来进行业务的逻辑处理
3、@repository(实现dao访问)
用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件.
4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的 <bean id="" class=""/>)
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。
说明:
下面写这个是引入component的扫描组件 (这是在配置文件中的书写格式,如spring mvc中的applicationcontent.xml,在spring boot中的话,因采用的是零配置所以要直接在类上加入@component注解就可以了)
<context:component-scan base-package=”com.mmnc”>
上面的这个例子是引入Component组件的例子,其中base-package表示为需要扫描的所有子包。
共同点:被@controller 、@service、@repository 、@component 注解的类,都会把这些类纳入进spring容器中进行管理
6.@Service
@Service如上所示是用于标注服务层,主要用来进行业务的逻辑处理,这里介绍一个用法,就是当你在写某个函数的serviceImpl类时,可以在顶部添加代码
1.@Service(interfaceClass = XXXService.class)
来映射对应的XXXservice,具体原理我还不知道,只是简单列出来。
7.@Transactional
- @Transactional是声明式事务管理 编程中使用的注解,添加位置应该是接口实现类或接口实现方法上,而不是接口类中。
- 访问权限:public 的方法才起作用。@Transactional 注解应该只被应用到 public 方法上,这是由 Spring AOP 的本质决定的。
- 系统设计:将标签放置在需要进行事务管理的方法上,而不是放在所有接口实现类上:只读的接口就不需要事务管理,由于配置了@Transactional就需要AOP拦截及事务的处理,可能影响系统性能。
回顾maven项目的spring boot相关知识点的更多相关文章
- 使用Maven插件构建Spring Boot应用程序镜像
使用Maven插件构建Spring Boot应用程序的Docker镜像. 环境准备 1.Linux系统 2.安装JDK,Maven 3.安装Docker 应用实践 1.在应用程序根目录下添加Docke ...
- eclipse 修改maven项目的jdk版本
eclipse 修改maven项目的jdk版本 CreationTime--2018年6月8日10点29分 Author:Marydon 1.情景展示 jdk版本太低,如何修改 2.错误方式 第一 ...
- IDEA Maven项目的Mybatis逆向工程
IDEA Maven项目的Mybatis逆向工程 1.配置.pom 如果是在多模块开发下,该文件逆向工程要生成的那个模块下的pom文件. <build> <plugins> & ...
- eclipse 导入包含子maven项目的maven项目时的正确方式(父子项目)
eclipse 导入包含子maven项目的maven项目时的正确方式(父子项目) NO1 导入时依次选择 import > Maven > Existing Maven Projects ...
- 【面试 spring boot】【第十七篇】spring boot相关面试
spring boot相关面试 ====================================================== 1.spring boot启动类 启动原理 参考:htt ...
- Spring Boot相关组件的添加
在勾选相关组件后, pom.xml文件上发生了根本的变化 1.这是最简单的项目的pom文件 <?xml version="1.0" encoding="UTF-8& ...
- idea创建maven多模块Spring Boot项目
1, 创建父项目 1.1,file - new - project 1.2,选择maven,Create from archetype(有的说不选,有的没说,不过我建父项目的时候没有勾选) 1.3,根 ...
- 第三章 Maven构建 Java Spring Boot Web项目
3.1 认识Srping Boot Spring Boot是一个框架,是一种全新的编程规范,它的产生简化了对框架的使用,简化了Spring众多的框架中大量的繁琐的配置文件,所以说Spring Bo ...
- Maven工程搭建spring boot+spring mvc+JPA
添加Spring boot支持,引入相关包: 1.maven工程,少不了pom.xml,spring boot的引入可参考官网: <parent> <groupId>org.s ...
随机推荐
- PyQt(Python+Qt)学习随笔:QListView的movement属性
老猿Python博文目录 老猿Python博客地址 QListView的movement属性用于控制在视图中怎么移动数据项,其类型为枚举类型QListView.Movement,有如下取值: Stat ...
- 关于EF框架EntityState的几种状态
在使用EF框架时,我们通常都是通过调用SaveChanges方法把增加/修改/删除的数据提交到数据库,但是上下文是如何知道实体对象是增加.修改还是删除呢?答案是通过EntityState的枚举值来判断 ...
- 【题解】Railway [Uva10263]
[题解]Railway [Uva10263] 传送门:\(\text{Railway [Uva10263]}\) [题目描述] 给出点 \(M\) 以及一个由 \(n\) 条线段依次相连的类曲形图(由 ...
- STL——容器(List)list 数据的存取
list.front(); //返回第一个元素 list.back(); //返回最后一个元素 1 #include <iostream> 2 #include <list> ...
- JS怎么把for循环出来的东西放到一个数组里
var students=[ {name: "vehicleTravelLicenseCopyBack", id: "a1"}, {name: "ve ...
- JavaSE15-集合·其二
1.Set集合 1.1 Set集合概述和特点 Set集合的特点 元素存取无序 没有索引.只能通过迭代器或增强for循环遍历 不能存储重复元素 1.2 哈希值 哈希值简介 是JDK根据对象的地址或者字符 ...
- 谁再问Servlet的问题,我就亲自上门来教学了
1. 概述 在这篇简短的文章中,我们将从概念上理解什么是servlet 和 servlet 容器以及它们是如何工作的. 同时,还能在请求.响应.会话对象.共享变量和多线程的上下文中看到它们的身影. 2 ...
- Hadoop核心-HDFS
上一篇我们熟悉了hadoop,本篇讲解一下hadoop第一个核心HDFS. 一.概述 HDFS是一个分布式文件存储系统,以流式数据访问模式存储超大文件,将数据分块存储到一个商业硬件集群内的不同机器上, ...
- .Net 常用ORM框架对比:EF Core、FreeSql、SqlSuger
前言: 最近由于工作需要,需要选用一种ORM框架,也因此对EF Core.FreeSql.SqlSuger作简单对比.个人认为各有有优势,存在即合理,不然早就被淘汰了是吧,所以如何选择因人而议.因项目 ...
- python SQLAlchemy反射生成models
1.安装SQLAcodegen pip install sqlacodegen 2.使用sqlacodegen生成案列 sqlacodegen mysql://root:123456@127.0.0. ...