欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > 初学springboot注解

初学springboot注解

2025/2/12 6:12:22 来源:https://blog.csdn.net/qq_36635270/article/details/145577909  浏览:    关键词:初学springboot注解

@Api 注解用于类上,描述了整个控制器的基本信息。
@ApiOperation 注解用于方法上,描述了具体 API 操作的详细信息。
注解中的主要属性包括:
value:对操作的简单描述。
notes:对操作的详细说明。
response:指定返回类型的类。
responseContainer:指定返回类型是单个对象还是集合(如 List)。

@RestController
@RequestMapping("/api")
@Api(value = "用户管理", tags = {"用户管理"})
public class UserController {@GetMapping("/users")@ApiOperation(value = "获取所有用户", notes = "返回所有用户的信息", response = User.class, responseContainer = "List")public List<User> getAllUsers() {// 方法实现return new ArrayList<>();}
}

@RequiredArgsConstructor
Lombok 库中的一个注解,用于自动生成一个包含所有 final 字段和带有 @NonNull 注解字段的构造函数:

import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class UserService {private final UserRepository userRepository;private final EmailService emailService;
}

@RequestMapping
1.用在类上时,它定义了该控制器所有处理请求的公共前缀
2.用在方法上时,它定义了具体的请求路径和处理方法

@RestController
@RequestMapping("/api")
public class MyController {@RequestMapping(value = "/hello", method = RequestMethod.GET)public String hello() {return "Hello, World!";}
}

/api/hello 这个 URL 将映射到 hello 方法。

@RequestMapping注解有许多属性,常用的包括:
value 或 path:指定请求的 URL 路径。
method:指定 HTTP 请求的方法(如 GET、POST 等)。
params:指定请求的参数。
headers:指定请求头。
consumes:指定处理请求的提交内容类型(Content-Type)。
produces:指定返回请求的内容类型(Accept)。

@RequestMapping(value = "/users", method = RequestMethod.POST, consumes = "application/json", produces = "application/json",produces = "application/json;charset=utf-8")
public ResponseEntity<User> createUser(@RequestBody User user) {// 方法实现
}

@GetMapping、@PostMapping、@PutMapping、@DeleteMapping 等。这些注解实际上是 @RequestMapping 的简化版

@GetMapping("/users")
public List<User> getUsers() {// 方法实现
}

等价于

@RequestMapping(value = "/users", method = RequestMethod.GET)
public List<User> getUsers() {// 方法实现
}

@Controller
用于标识一个类是 Spring MVC 控制器,Spring 会自动检测到这个类,并将其注册为一个 Spring Bean。这个类中的方法可以处理特定的 HTTP 请求,并返回相应的视图或数据。

@Controller
@RequestMapping("/hello")
public class HelloController {@GetMapping@ResponseBodypublic String sayHello() {return "Hello, World!";}
}

@Controller 注解标识了 HelloController 类是一个控制器。
@RequestMapping(“/hello”) 注解定义了控制器的根路径是 /hello。
@GetMapping 注解定义了 sayHello 方法处理 /hello 路径的 GET 请求。
@ResponseBody 注解表示 sayHello 方法的返回值将直接作为 HTTP 响应体返回,而不是返回视图名称。

@RestController
@Controller 通常与视图解析器(ViewResolver)一起使用,以便将控制器方法的返回值解析为视图名称。如果你希望直接返回数据(而不是视图名称),可以使用@RestController 注解 ,它是 @Controller 和 @ResponseBody 的组合注解。

http请求相关:
@RequestParam
是 Spring Framework 中的一个注解,用于处理 HTTP 请求中的查询参数或表单参数。它可以用在方法参数前,以便从请求中提取参数值
假设你有一个 URL 路径 /greeting?name=John,你可以使用 @RequestParam 来获取 name 参数的值:

@RestController
public class GreetingController {@GetMapping("/greeting")public String greeting(@RequestParam String name) {return "Hello, " + name + "!";}
}

你可以为 @RequestParam 设置一个默认值,以防请求中没有提供该参数:

@GetMapping("/greeting")
public String greeting(@RequestParam(defaultValue = "World") String name) {return "Hello, " + name + "!";
}

可以通过设置 required 属性为 false 来使参数成为可选的:

@GetMapping("/greeting")
public String greeting(@RequestParam(required = false) String name) {if (name == null) {name = "World";}return "Hello, " + name + "!";
}

也可以用于接收多个相同名称的参数值:
…/favoriteColors?colors=red&colors=blue&colors=green

@GetMapping("/ favoriteColors")
public String favoriteColors(@RequestParam List<String> colors) {return "Your favorite colors are: " + colors;
}

@RequestBody
是 Spring Framework 中的一个注解,用于将 HTTP 请求体(body)转换为 Java 对象。它通常用于处理 POST 或 PUT 请求,其中客户端发送的数据包含在请求体中。
请求体:
{
“name”: “John”,
“age”: 30
}
在这个例子中,@RequestBody User user 将请求体中的 JSON 对象转换为 User 类型的 Java 对象。

@RestController
public class UserController {//通过 consumes 属性来指定处理请求体的内容类型(Content-Type)@PostMapping("/users", consumes = "application/json")public String createUser(@RequestBody User user) {return "User created: " + user.getName();}
}

你可以使用 Jackson 或 Gson 等库来自定义请求体的反序列化过程。例如,如果你使用 Jackson,你可以通过在类上添加 @JsonDeserialize 注解来自定义反序列化过程

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@JsonDeserialize(using = CustomUserDeserializer.class)
public class User {private String name;private int age;// getters and setters
}

@PathVariable
是 Spring Framework 中的一个注解,用于将 URL 路径中的模板变量绑定到方法参数上

@RestController
public class UserController {@GetMapping("/users/{userId}/orders/{orderId}")public String getOrderForUser(@PathVariable String userId, @PathVariable String orderId) {return "User ID: " + userId + ", Order ID: " + orderId;}
}

@Repository
是 Spring Framework 中的一个注解,用于标识一个类是数据访问层的组件。数据访问层通常负责与数据库进行交互,执行 CRUD(创建、读取、更新、删除)操作。

当一个类被 @Repository 注解时,Spring 会自动检测到这个类,并将其注册为一个 Spring Bean。这个类中的方法可以包含与数据库交互的逻辑,并可以被服务层(如 Service)调用。

import org.springframework.stereotype.Repository;
@Repository
public class UserRepository {public User findById(Long id) {// 实现数据库查询逻辑return new User();}
}

@Repository 注解通常与 @Autowired 注解一起使用,以便自动装配依赖。例如,你可以在服务层中使用 @Autowired 注解来注入

@Autowired
是 Spring Framework 中的一个注解,用于自动装配 Bean。它可以用在构造函数、字段或方法上,以便 Spring 容器自动注入依赖。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {//字段注入(可以通过设置 required 属性为 false 来使注入成为可选的)//可选注入 @Autowired(required = false)//如果 Spring 容器中没有 UserRepository 类型的 Bean,那么 userRepository 将被注入为 null。@Autowiredprivate UserRepository userRepository;//构造函数注入@Autowiredpublic UserService(UserRepository userRepository) {this.userRepository = userRepository;}//在方法上使用 @Autowired 注解,以便 Spring 通过方法注入依赖@Autowiredpublic void setUserRepository(UserRepository userRepository) {this.userRepository = userRepository;}
}

@Service
是 Spring Framework 中的一个注解,用于标识一个类是服务层的组件。服务层通常包含业务逻辑,负责调用数据访问层(如 DAO 或 Repository)的代码,并可能包含一些额外的业务规则或逻辑。
当一个类被 @Service 注解时,Spring 会自动检测到这个类,并将其注册为一个 Spring Bean。这个类中的方法可以包含业务逻辑,并可以被其他组件(如控制器)调用。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {private final UserRepository userRepository;@Autowiredpublic UserService(UserRepository userRepository) {this.userRepository = userRepository;}public User getUserById(Long id) {// 调用 userRepository 获取用户信息return userRepository.findById(id);}
}

@Service 注解标识了 UserService 类是一个服务组件。
UserService 类包含业务逻辑方法,如 getUserById。
@Autowired 注解用于注入 UserRepository 类型的依赖。
@Service 注解通常与 @Autowired 注解一起使用,以便自动装配依赖。此外,Spring 还提供了其他类似的注解,如 @Component、@Repository 和 @Controller,用于标识不同类型的组件。
@Component:这是一个通用的组件注解,可以用于任何类型的组件。
@Repository:这个注解通常用于数据访问层的组件,如 DAO 或 Repository。
@Controller:这个注解用于控制器组件,负责处理用户请求。

@Data
Lombok 库中的一个注解,它是一个方便的注解,可以减少样板代码。@Data 注解会为类自动生成以下内容:
@Getter:为所有字段生成 getter 方法。
@Setter:为所有非 final 字段生成 setter 方法。
@ToString:生成 toString 方法。
@EqualsAndHashCode:生成 equals 和 hashCode 方法。
@RequiredArgsConstructor:生成一个包含所有 final 字段和带有 @NonNull 注解字段的构造函数。

import lombok.Data;
@Data
public class User {private Long id;private String name;private int age;
}

@Param
是 MyBatis 框架中的一个注解,用于将方法参数传递给 SQL 语句。它通常与 @Select、@Insert、@Update 和 @Delete 等注解一起使用,以便在 XML 映射文件中引用这些参数。

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
public interface UserMapper {@Select("SELECT * FROM users WHERE id = #{id}")User findById(@Param("id") Long id);
}

@Select 注解定义了一个 SQL 查询语句。
#{id} 是 SQL 语句中的参数占位符,它将被方法参数 id 的值替换。
@Param(“id”) 注解将方法参数 id 绑定到 SQL 语句中的参数占位符 #{id}。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com