回顾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 ...
随机推荐
- Mysql-索引分析查询性能
explain 全文只有一个关键点,那就是explain,explain 显示了MySQL如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句.简单讲,它的作用就 ...
- moviepy音视频开发:音频合成类CompositeAudioClip介绍
☞ ░ 前往老猿Python博文目录 ░ CompositeAudioClip是AudioClip的直接子类,用于将几个音频剪辑合成为一个音频剪辑.CompositeAudioClip类只有一个构造方 ...
- 第6.5节 exec函数:一个自说自话的强大Python动态编译器
在Python动态执行的函数中,exec是用于执行一个字符串内包含的Python源码或其编译后对应的字节码. 一. 语法 1. exec(Code, globals=None, local ...
- PyQt(Python+Qt)学习随笔:QDockWidget停靠部件的allowedAreas属性
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 QDockWidget的allowedAreas属性用于控制停靠部件在 ...
- 第14.16节 爬虫实战2:赠人玫瑰,手留余香! request+BeautifulSoup实现csdn博文自动点赞
写在前面:本文仅供参考学习,请勿用作它途,禁止转载! 在<第14.14节 爬虫实战准备:csdn博文点赞过程http请求和响应信息分析>老猿分析了csdn博文点赞处理的http请求和响应报 ...
- Leetcode学习笔记(6)
题目1 ID112 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标 ...
- 跨国合作:Serverless Components 在腾讯云的落地和实践
导语 | Serverless Components 是 Serverless Framework 推出的最新解决⽅案,具有基础设施编排能⼒,开发者通过使⽤ Serverless Components ...
- MacOS上Parallels Desktop安装MacOSHighSierra
下载dmg文件 http://www.macoshome.com/macos/977.html 配置宿主机时间2015-10-27 23:25 为了防止"macOS未能安装在您的电脑上_安装 ...
- 题解-Little C Loves 3 III
Little C Loves 3 III 给定 \(n\) 和序列 \(a_0,a_1,\dots,a_{2^n-1}\) 和 \(b_0,b_1,\dots,b_{2^n-1}\),求序列 \(c_ ...
- 【UV统计】海量数据统计的前世今生
转载请注明出处 背景 在互联网公司中,每个项目都需要数据统计.分析,便于项目组利用详细数据研究项目的整体情况,进行下一步的调整.在数据统计中,UV统计是最常见的,也是最普遍的.有的场景要求实时性很高, ...