Java spring boot常用注解

简介: Spring Boot是一个基于Spring框架的开发框架,它简化了Spring应用的配置和部署过程,提供了一系列注解来帮助开发人员快速构建可靠和高效的应用程序。本文将详细介绍Spring Boot中常用的注解及其使用方法。

Spring Boot是一个基于Spring框架的开发框架,它简化了Spring应用的配置和部署过程,提供了一系列注解来帮助开发人员快速构建可靠和高效的应用程序。本文将详细介绍Spring Boot中常用的注解及其使用方法。


Spring Boot注解可以分为以下几个方面:应用程序入口注解、控制器注解、请求注解、参数绑定注解、依赖注入注解、组件注解、条件注解、配置注解等。

一、应用程序入口注解

1. @SpringBootApplication


@SpringBootApplication是一个组合注解,用于标记一个主启动类,表示这是一个Spring Boot应用程序的入口点。它包含了以下三个注解的功能:@Configuration、@EnableAutoConfiguration和@ComponentScan。


@Configuration注解表示这个类是一个配置类,它会提供一些初始化配置。


@EnableAutoConfiguration注解表示启用自动配置功能,Spring Boot会根据依赖和配置自动配置应用程序。


@ComponentScan注解表示扫描和加载应用程序中的组件。

2. @Configuration

@Configuration注解用于标记一个类为Spring的配置类。配置类中可以定义Bean对象和配置相关的信息。在配置类中,可以使用@Bean注解来定义一个Bean对象。例如:

@Configuration
public class AppConfig {
@Bean
public UserService userService() {
return new UserServiceImpl();
}
}

在上面的例子中,AppConfig类被标记为配置类,userService()方法被@Bean注解标记为一个Bean对象的创建方法。

二、控制器注解

1. @RestController

@RestController注解用于标记一个类为Restful控制器,使其能够处理HTTP请求并返回JSON或XML等数据格式的响应。与@Controller注解不同的是,@RestController注解会自动将方法的返回值转换为HTTP响应体,并返回给客户端。例如:

@RestController
@RequestMapping(“/api/user”)
public class UserController {
@GetMapping(“/{id}”)
public User getUser(@PathVariable(“id”) int id) {
// 根据id查询用户信息
User user = userService.getUserById(id);
return user;
}
}

在上面的例子中,UserController类被标记为Restful控制器,getUser()方法被@GetMapping注解标记为处理GET请求的方法。方法的返回值User会被自动转换为JSON格式并返回给客户端。

2. @RequestMapping


@RequestMapping注解用于标记一个方法或类的方法,表示它可以处理来自客户端的HTTP请求。可以通过设置value、method、params、headers等属性来指定请求的URL路径、请求方法、参数或头等条件。例如:

@RestController
@RequestMapping(“/api/user”)
public class UserController {
@GetMapping(“/{id}”)
public User getUser(@PathVariable(“id”) int id) {
// 根据id查询用户信息
User user = userService.getUserById(id);
return user;
}
}

在上面的例子中,@RequestMapping(“/api/user”)表示UserController类中的方法处理以/api/user开头的请求。@GetMapping(“/{id}”)表示getUser()方法处理以GET方法和路径中包含{id}的请求。

三、请求注解

1. @PathVariable

@PathVariable注解用于将URL路径中的变量绑定到方法的参数上。例如,@RequestMapping(“/api/user/{id}”),可以使用@PathVariable(“id”) int id来获取URL路径中的id值。例如:

@RestController
@RequestMapping(“/api/user”)
public class UserController {
@GetMapping(“/{id}”)
public User getUser(@PathVariable(“id”) int id) {
// 根据id查询用户信息
User user = userService.getUserById(id);
return user;
}
}

在上面的例子中,@GetMapping(“/{id}”)表示getUser()方法处理以GET方法和路径中包含{id}的请求。@PathVariable(“id”) int id表示将路径中的id值绑定到方法的id参数上。

2. @RequestParam

@RequestParam注解用于将请求参数绑定到方法的参数上。可以设置value、required、defaultValue等属性来指定请求参数的名称、是否必需和默认值。例如:

@RestController
@RequestMapping(“/api/user”)
public class UserController {
@GetMapping
public List getUsers(@RequestParam(value = “name”, required = false) String name) {
// 根据name查询用户列表
List userList = userService.getUsersByName(name);
return userList;
}
}

在上面的例子中,@RequestMapping(“/api/user”)表示UserController类中的方法处理以/api/user开头的请求。@GetMapping表示处理GET方法的请求。@RequestParam(value = “name”, required = false) String name表示将名为name的请求参数绑定到方法的name参数上,并指定name参数为可选参数。

四、参数绑定注解

1. @RequestBody


@RequestBody注解用于将请求体中的数据绑定到方法的参数上。通常用于接收JSON或XML格式的请求数据。例如:

@RestController
@RequestMapping(“/api/user”)
public class UserController {
@PostMapping
public User createUser(@RequestBody User user) {
// 创建用户
userService.createUser(user);
return user;
}
}

在上面的例子中,@PostMapping表示处理POST方法的请求。@RequestBody User user表示将请求体中的JSON数据转换为User对象,并绑定到方法的user参数上。

2. @ResponseBody


@ResponseBody注解用于将方法的返回值转换为HTTP响应体,并返回给客户端。通常用于返回JSON或XML格式的数据。例如:

@RestController
@RequestMapping(“/api/user”)
public class UserController {
@GetMapping
public List getUsers() {
// 查询用户列表
List userList = userService.getUsers();
return userList;
}
}

在上面的例子中,@RequestMapping(“/api/user”)表示UserController类中的方法处理以/api/user开头的请求。@GetMapping表示处理GET方法的请求。方法的返回值List会被自动转换为JSON格式并返回给客户端。


五、依赖注入注解

1. @Autowired


@Autowired注解用于自动装配一个Bean对象。Spring Boot会自动查找并将匹配的Bean对象注入到目标对象中。例如:


@RestController
@RequestMapping(“/api/user”)
public class UserController {
@Autowired
private UserService userService;
// 省略其他方法...

在上面的例子中,@Autowired注解将userService属性注入到UserController类中。Spring Boot会自动查找UserService类的实现并注入到属性中。

六、组件注解

1. @Component


@Component注解用于标记一个类为Spring的一个组件。可以用于自动扫描和自动装配。例如:


@Component

public class UserServiceImpl implements UserService {

// 省略实现代码…

}


在上面的例子中,UserServiceImpl类被标记为一个组件。Spring Boot会自动扫描并将其注册为一个Bean对象。


2. @Service

@Service注解用于标记一个类为Spring的一个服务类。通常用于业务逻辑的实现。例如:

@Service
public class UserServiceImpl implements UserService {
// 省略实现代码…
}

在上面的例子中,UserServiceImpl类被标记为一个服务类。Spring Boot会自动扫描并将其注册为一个Bean对象。

3. @Repository

@Repository注解用于标记一个类为Spring的一个仓库类。通常用于数据访问的实现。例如:

@Repository
public class UserRepositoryImpl implements UserRepository {
// 省略实现代码…
}

在上面的例子中,UserRepositoryImpl类被标记为一个仓库类。Spring Boot会自动扫描并将其注册为一个Bean对象。

七、条件注解

1. @Conditional

@Configuration
public class AppConfig {
@Bean
@ConditionalOnProperty(name = “useInMemoryStorage”, havingValue = “true”)
public UserRepository userRepository() {
return new InMemoryUserRepository();
}
@Bean
@ConditionalOnProperty(name = "useInMemoryStorage", havingValue = "false")
public UserRepository userRepository() {
    return new DatabaseUserRepository();
}

}

在上面的例子中,根据条件useInMemoryStorage的值来决定创建哪个UserRepository的实现类。

相关文章
|
27天前
|
XML Java 编译器
Java注解的底层源码剖析与技术认识
Java注解(Annotation)是Java 5引入的一种新特性,它提供了一种在代码中添加元数据(Metadata)的方式。注解本身并不是代码的一部分,它们不会直接影响代码的执行,但可以在编译、类加载和运行时被读取和处理。注解为开发者提供了一种以非侵入性的方式为代码提供额外信息的手段,这些信息可以用于生成文档、编译时检查、运行时处理等。
62 7
|
8天前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
131 73
|
3天前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
34 21
|
8天前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
|
8天前
|
Java Spring
【Spring配置】idea编码格式导致注解汉字无法保存
问题一:对于同一个项目,我们在使用idea的过程中,使用汉字注解完后,再打开该项目,汉字变成乱码问题二:本来a项目中,汉字注解调试好了,没有乱码了,但是创建出来的新的项目,写的注解又成乱码了。
|
1月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
56 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
19天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
101 13
|
27天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
1月前
|
Java 编译器 数据库
Java 中的注解(Annotations):代码中的 “元数据” 魔法
Java注解是代码中的“元数据”标签,不直接参与业务逻辑,但在编译或运行时提供重要信息。本文介绍了注解的基础语法、内置注解的应用场景,以及如何自定义注解和结合AOP技术实现方法执行日志记录,展示了注解在提升代码质量、简化开发流程和增强程序功能方面的强大作用。
76 5
|
2月前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
131 2