首页 > 其他分享 >开发常用注解简介

开发常用注解简介

时间:2023-01-22 20:24:08浏览次数:57  
标签:常用 String 简介 private bean 注解 id RequestMapping

Spring系

预备理解

bean注入,自动装配

首先了解一下IOC操作Bean管理,bean管理是指(1)spring创建对象 (2)spring注入属性。

当我们在将一个类上标注@Service或者@Controller或@Component或@Repository注解之后,spring的组件扫描就会自动发现它,并且

会将其初始化为spring应用上下文中的bean。

bean是计算机自动生成的类,bean是一个由Spring IoC容器实例化、组装和管理的对象

当需要使用这个bean的时候,例如加上@Autowired注解的时候,这个bean就会被创建。而且初始化是根据无参构造函数。

dao

DAO (DataAccessobjects 数据存取对象)是指位于业务逻辑和持久化数据之间实现对持久化数据的访问。通俗来讲,就是将数据库操作都封装起来。对外提供相应的接口

三层架构mvc

MVC是Model-View-Controller的简称,即模型-视图-控制器。java web中我们使用三个文件夹:Controller,Service,Dao来构建mvc

实现bean注入 @Component

作用就是实现bean的注入(也就是将标注@Component注解的类交由spring管理),id默认为类的小写

在Java的web开发中,提供3个@Component注解衍生注解(功能与@component一样)分别是:

@Repository

作用于dao层,实现dao访问

@Service

作用于service层

@Controller

作用于controller层

自动装配bean @Autowired与@Resources

@Autowired

spring提供,使用前需要先配置注解的支持

@Autowired可以标注在属性上、方法上和构造器上,来完成自动装配。

注解注入时首先根据byType注入,当接口存在多个实现类且使用@Service注解的默认bean名字时,根据byName注入。在进行byName时,如果bean_id都不是set方法后面的值(setDog,结果id为dog222),可以额外加上注解

@Resources

这个是java自带的,不用导入配置支持

是先byName再byType。可以通过@Resource(name="xxxx")来指定

@ResponseBody

将java对象转为json格式的数据,在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中

简短截说就是指该类中所有的API接口返回的数据,甭管你对应的方法返回Map或是其他Object,它会以Json字符串的形式返回给客户端

@RestController

@RestController 是@Controller和@ResponseBody 的结合

@Configuration

@Configuration是Spring的注解,不是SpringBoot的!早在Spring框架的时候就有使用,但是由于那个时候配置文件还是比较流行,因此@Configuration注解并没有太盛行,甚至很多人就认为它是SpringBoot的注解

作用:声明一个类为配置类,用于取代bean.xml配置文件注册bean对象

@RequestMapping

可以用于类或者方法,用来使url能够请求到当前实现类的当前方法

@RequestMapping("/testRequest")
public String testRequest(){
    return "success";
}

SpringMVC以前版本的@RequestMapping

如果我们想使用传统的@RequestMapping注释实现URL处理程序,那么它应该是这样的:

@RequestMapping(value = “/get/{id}”, method = RequestMethod.GET)

新方法可以简化为:

@GetMapping("/get/{id}")

到了新版本被下面新注释替代,相当于增加的选项:

@GetMapping

用于处理请求方法的GET类型

@PostMapping

用于处理请求方法的POST类型

@PutMapping

@DeleteMapping

@PatchMapping

@PathVariable

为了配合@RequestMapping系进行占位

主要作用:映射URL绑定的占位符

@RequestMapping("/user/{id}")
public String testPathVariable(@PathVariable("id") String id){
    System.out.println("路径上的占位符的值="+id);
    return "success";
}

假如你的请求为localhost:8080/user/admin,可以输出:

路径上的占位符的值=admin

@RequestParam

如果不使用RestFul风格,Controller实现类的方法的参数要使用@RequestParam 固定前端接收的变量名(如果不这样,url中参数变量名错误不会报错,仍然会转发,只不过参数值为null

@Controller
@RequestMapping("/anno")
public class AnnoController {
    @RequestMapping("/testRequestParam")
    public String testRequestParam(@RequestParam(value="name") String username){
        System.out.println("执行了...");
        System.out.println(username);
        return "success";
    }

如果现在访问localhost:8080/.../anno/testRequestParam?name=zaughter

则显示结果为执行了...zaughter

@ConfigurationProperties

直接看例子,例子来源自我的另一篇文章SpringBoot - Zaughter - 博客园 (cnblogs.com)

实体类

/*
@ConfigurationProperties作用:
将配置文件中配置的每一个属性的值,映射到这个组件中;
告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
参数 prefix = “person” : 将配置文件中的person下面的所有属性一一对应
*/
@Component //注册bean
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private Integer age;
    private Boolean happy;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;
}

yaml配置

person:
  name: qinjiang
  age: 3
  happy: false
  birth: 2000/01/01
  maps: {k1: v1,k2: v2}
  lists:
   - code
   - girl
   - music
  dog:
    name: 旺财
    age: 1

新增依赖(可以不配置)

<!-- 导入配置文件处理器,配置文件进行绑定就会有提示,需要重启 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-configuration-processor</artifactId>
  <optional>true</optional>
</dependency>

test

@SpringBootTest
class DemoApplicationTests {

    @Autowired
    Person person; //将person自动注入进来

    @Test
    public void contextLoads() {
        System.out.println(person); //打印person信息
    }

}

用于数据校验

常用注解

@NotNull(message="名字不能为空")
private String userName;
@Max(value=120,message="年龄最大不能查过120")
private int age;
@Email(message="邮箱格式错误")
private String email;

空检查
@Null       验证对象是否为null
@NotNull    验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank   检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
@NotEmpty   检查约束元素是否为NULL或者是EMPTY.
    
Booelan检查
@AssertTrue     验证 Boolean 对象是否为 true  
@AssertFalse    验证 Boolean 对象是否为 false  
    
长度检查
@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内  
@Length(min=, max=) string is between min and max included.

日期检查
@Past       验证 Date 和 Calendar 对象是否在当前时间之前  
@Future     验证 Date 和 Calendar 对象是否在当前时间之后  
@Pattern    验证 String 对象是否符合正则表达式的规则

.......等等
除此以外,我们还可以自定义一些数据校验规则

标签:常用,String,简介,private,bean,注解,id,RequestMapping
From: https://www.cnblogs.com/zaughtercode/p/17064620.html

相关文章

  • mt_Day7: 多态、内部类、一些常用API
    多态同类型对象,执行同一个行为,会表现出不同的特征多态成员访问特点:方法调用:编译看左边,运行看右边变量调用:编译看左边,运行也看左边(多态侧重行为多态)publicabstrac......
  • @Accessors(chain=true)注解报错的解决方案
    @Accessors(chain=true)注解报错的解决方案如下所示:CannotinvokesetItemTitle(String)ontheprimitivetypevoid定义的实体类如下:@DatapublicstaticclassRefu......
  • 1588_AURIX_TC275_PMU简介
    全部学习汇总:​​GreyZhang/g_TC275:happyhackingforTC275!(github.com)​​PMU是编程存储单元的缩写,但是落实到了具体的硬件模块上其实是一个Flash模块。在TC275中,只......
  • Kettle简介
    一、Kettle基本介绍Kettle(现更名为PentahoDataIntegration-Pentaho)是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装。它允许你管理来......
  • day26-XML/枚举/注解
    1.xml1.1概述【理解】万维网联盟(W3C)万维网联盟(W3C)创建于1994年,又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。建立者:TimBerners-Lee(蒂姆·......
  • spring boot——请求与参数校验——重要概念——异常处理——@ControllerAdvice注解
        PS,访问资源,引入如下:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thyme......
  • spring boot——请求与参数校验——重要概念——异常处理——@ExceptionHandler注解
          自定义一个类:MyExceptionpackageorg.example.Exception;publicclassMyExceptionextendsException{privatestaticfinallongseria......
  • 【总结】DP的常用优化
    1.单调队列优化2.斜率优化2.1.算法介绍如果一类\(dp\)可以写为\(f_i=\max/\min{a_i\cdotb_j+c_j+d_i}\),即只和\(i\),\(j\)有关的项和一个和\(i\),\(j\)......
  • 算法经常用到的数据结构
    栈:先进后出Stack<Integer>stack=newStack<>();//推荐Deque<Integer>stack1=newArrayDeque<>();//pop()删除并返回栈顶的值//peek()返回栈顶端的值,不删类似......
  • 使用 Burpsuite 测试的常用操作(二)
    大家好啊,我是大田。接上篇文章「使用Burpsuite测试的常用操作(一)」,今天继续分享一下Burpsuite在工作中常用操作三、本文中2个常用操作1、Burpsuite_proxy篡改请......