Spring&SpringBoot常用注解总结

1.@SpringBootApplication

这个注解是spring boot项目的基石,创建springboot项目之后在主类上加

@SpringBootApplication
public class SpringSecurityJwtGuideApplication {
      public static void main(java.lang.String[] args) {
        SpringApplication.run(SpringSecurityJwtGuideApplication.class, args);
    }
}

 @SpringBootApplication可以看作是@Configuration(允许在spring上下文中注册额外的bean或导入其他配置类)、@EnableAutoConfiguration(启用springboot的自动配置机制)、@ComponentScan(扫描被@Compoment等注解的bean)注解的集合

2.Spring Bean相关

2.1.@Autowired

自动导入对象到类中,被注入进的类同样要被spring容器管理。若:Service类注入到Controller类中

@Service
public class UserService {
  ......
}

@RestController
@RequestMapping("/users")
public class UserController {
   @Autowired
   private UserService userService;
   ......
}

2.2@Component、@Repository、@Service、@Controller

我们一般使用@Autowried注解让Spring容器帮助我们自动配置bean。要想把类标识成可用的@Autowired注解自动装配的bean的类,可以使用以下注解实现:

@Component:通用的注解,可标注任意类为spring组件。若不知道Bean属于那一层,可以使用这个注解标注

@Repository:对应持久层即Dao层,主要用于数据库相关操作

@Service:对应服务层,主要涉及一些复杂的逻辑,需要用到Dao层

@Controller:对应Spring MVC控制层,主要接受用户请求并调用Service层返回数据给前端页面

2.3@RestController

@RestController注解是@Controller和@ResponseBody的合集,表示这个是控制器bean,并且是将函数的返回值直接填入HTTP响应体中,是REST风格的控制器

2.4@Scope

声明Spring Bean的作用域,使用方法:

@Bean
@Scope("singleton")
public Person personSingleton() {
    return new Person();
}

四种常见的Spring Bean的作用域

singleton:唯一bean实例,spring中的bean默认都是单例的

prototype:每次请求都会创建一个新的bean实例

request:每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效

session:每一个HTTP Session会产生一个新的bean,该bean仅对当前HTTP session内有效

2.5@Configuration

一般用来声明配置类,可以使用@Component注解替代

@Configuration
public class AppConfig {
    @Bean
    public TransferService transferService() {
        return new TransferServiceImpl();
    }

}

 3.前后端传值

3.1@Pathvariable和@RequestParam

@Pathvariable用于获取路径参数,@RequestParam用于获取查询参数

@GetMapping("/klasses/{klassId}/teachers")
public List<Teacher> getKlassRelatedTeachers(
         @PathVariable("klassId") Long klassId,
         @RequestParam(value = "type", required = false) String type ) {
...
}

3.2@RequestBody

用于读取Request请求(可能是POST、PUT、DELETE、GET请求)的body部分并且Content-type为application/json格式的数据,接收到数据之后会自动将数据绑定到java对象上。系统会使用HttpMessageConverter或者自定义的HttpMessageConverter将请求的body中的json字符串转换为Java对象。

@PostMapping("/sign-up")
public ResponseEntity signUp(@RequestBody @Valid UserRegisterRequest userRegisterRequest) {
  userService.save(userRegisterRequest);
  return ResponseEntity.ok().build();
}

注意:一个请求方法只可以有一个@RequestBody,但是可以有多个@RequestParam和@PathVariable.

4.读取配置信息

4.1@Value

使用@Value("${property}")读取比较简单的配置信息

4.2@ConfigurationProperties

通过@ConfigurationProperties读取配置信息并于bean绑定

@Component
@ConfigurationProperties(prefix = "library")
class LibraryProperties {
    @NotEmpty
    private String location;
    private List<Book> books;

    @Setter
    @Getter
    @ToString
    static class Book {
        String name;
        String description;
    }
  省略getter/setter
  ......
}

 5.参数校验

一些常用的字段验证的注解

@NotEmpty 被注释的字符串不能为null也不能为空

@NotBlank 被注释的字符串非null,并且必须包含一个非空白字符

@Null 被注释的元素必须为null

@NotNull 被注释的元素必须不为null

@AssertTrue 被注释的元素必须为true

@AssertFalse 被注释的元素必须为false

@Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式

6.全局处理Controller层异常

@ControllerAdvice:注解定义全局异常处理类

@ExceptionHandler:注解声明异常处理方法

若方法参数不对的话就会抛出MethodArgumentNotValidException,我们来处理这个异常。

@ControllerAdvice
@ResponseBody
public class GlobalExceptionHandler {

    /**
     * 请求参数异常处理
     */
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseEntity<?> handleMethodArgumentNotValidException(MethodArgumentNotValidException ex, HttpServletRequest request) {
       ......
    }
}

7.JPA相关

7.1创建表

@Entity 声明一个类对应一个数据库实体

@Table设置表名

@Entity
@Table(name = "role")
public class Role {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String description;
    省略getter/setter......
}

7.2创建主键

@Id声明一个字段为主键

使用@Id声明之后,我们还需要定义主键的生成策略。我们还可以使用@GeneratedValue指定主键生成策略

通过@GeneratedValue直接使用JPA内置提供的四种主键生成策略来指定主键生成策略

7.3设置字段类型

@Column声明字段

7.4指定不持久化特定字段

@Transient 声明不需要与数据库映射的字段,在保存的时候不要保存进数据库

7.5创建枚举类型的字段

@Enumerated

8.事务

在要开启事务的方法上使用@Transactional注解即可

@Transactional(rollbackFor = Exception.class)
public void save() {
  ......
}

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SpringSpring Boot都有一些常用的注解,用于配置和管理应用程序的各个方面。以下是一些常见的注解: 1. @Configuration: 这个注解用于标识一个类是配置类,其中定义了一些Bean的配置信息。 2. @ComponentScan: 这个注解用于指定要扫描的包,以查找和注册Spring组件。 3. @EnableAutoConfiguration: 这个注解用于启用Spring Boot的自动配置功能,根据类路径上的依赖自动配置Spring应用程序。 4. @Value: 这个注解用于从配置文件中读取属性值,并将其注入到对应的变量中。 5. @Controller: 这个注解用于标识一个类是控制器,处理HTTP请求并返回响应。 6. @Service: 这个注解用于标识一个类是服务类,执行业务逻辑和计算。 7. @Repository: 这个注解用于标识一个类是数据访问对象(DAO),用于访问数据库。 8. @Transactional: 这个注解用于标识一个方法或类需要在事务中执行,确保数据的一致性和完整性。 9. @Scheduled: 这个注解用于标识一个方法是定时任务,可以按照指定的时间间隔或表达式执行。 这些注解可以帮助开发者更方便地配置和管理SpringSpring Boot应用程序的各个方面。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [SpringSpringboot常见注解](https://blog.csdn.net/ynkimage/article/details/131364804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Spring 最常用的 7 大类注解,一文整理!这些注解你都有用过吗?](https://blog.csdn.net/seven9711/article/details/113203148)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EmilyRose

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值