开发常用注解简介

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

image-20230122163958881

实现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 对象是否符合正则表达式的规则

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

数据库系

@TableName

当数据库名与实体类名不一致或不符合驼峰命名时,需要在此注解指定表名(不加这个注解默认将实体类的小写形式在db中寻找)

@TableField

  1. 也可以像TableName一样解决名称不一致的情况
  2. 可以解决该属性在数据库中不存在的情况@TableField(exist = false)
  3. 可以解决有的字段数据比较隐私,不想被查出来的情况@TableField(select=false)

Lombok系

idea中使用除了需要导入依赖,还需要去设置里下载Lombok插件才能生效

@Data

注在类上,提供类的get、set、equals、hashCode、toString等方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot开发过程中,常用的注解有许多。以下是一些常见的注解: 1. `@SpringBootApplication`:这是一个组合注解,标记主类为Spring Boot应用程序的入口点。它还包括了`@Configuration`、`@EnableAutoConfiguration`和`@ComponentScan`等注解。 2. `@RestController`:这个注解用于标记一个类为RESTful风格的控制器。它是`@Controller`和`@ResponseBody`注解的组合。 3. `@RequestMapping`:这个注解用于将HTTP请求映射到控制器的处理方法。它可以用于类级别和方法级别,用于指定URL路径和请求方法。 4. `@PathVariable`:这个注解用于将URL路径变量绑定到方法参数上。例如,`@RequestMapping("/users/{id}")`和`public User getUser(@PathVariable("id") int id)`可以将URL中的{id}作为方法参数。 5. `@RequestParam`:这个注解用于将请求参数绑定到方法参数上。例如,`public User getUser(@RequestParam("name") String name)`可以将请求中的name参数绑定到方法参数。 6. `@Autowired`:这个注解用于自动装配Spring管理的Bean。它可以用于字段、构造函数和方法上。 7. `@Component`:这个注解用于标记一个类为Spring管理的组件。它是通用的,可以用于任何类。 8. `@Service`:这个注解用于标记一个类为业务逻辑层的组件。它通常用于标记Service类。 9. `@Repository`:这个注解用于标记一个类为数据访问层的组件。它通常用于标记DAO类。 以上只是一些常见的注解,Spring Boot还有很多其他的注解,用于实现不同的功能和特性。开发时可以根据实际需求选择合适的注解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值