回顾maven项目的spring boot相关知识点

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

回顾maven项目的spring boot相关知识点

可以混且很有必要   2021-01-02 我要评论

  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拦截及事务的处理,可能影响系统性能。

 

 

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们