Skip to content

yudao-boot-min 入门指南

常用注解

  • @Controller
  • @RestController
  • @RequestMapping
  • @GetMapping
  • @PostMapping
  • @PutMapping
  • @DeleteMapping
  • @RequestParam
  • @RequestBody
  • @PathVariable
  • @Autowired
  • @Service
  • @Repository
  • @ResponseBody
  • @Operation
  • @PreAuthorize
  • @Validated
  • @Resource
  • @Override
  • @Transactional
  • @LogRecord

注解详解

@Controller

@Controller 是 Spring 框架中的一个注解,用于标记一个类作为 Spring MVC 的控制器。它通常与 @RequestMapping 一起使用,用于处理 Web 请求。

@Controller
@RequestMapping("/users")
public class UserController {
    // 控制器逻辑
}

@RestController

@RestController 是 Spring 4.0 引入的注解,它是 @Controller 和 @ResponseBody 的组合。使用此注解的类中的所有方法都会自动将返回值序列化为 JSON 并写入响应体。

@RestController
@RequestMapping("/api/users")
public class UserRestController {
    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        // 返回用户信息,自动序列化为 JSON
        return userService.findById(id);
    }
}

@RequestMapping

@RequestMapping 用于映射 Web 请求到具体的处理方法。它可以应用于类级别或方法级别,指定请求的 URL 路径和 HTTP 方法。

@Controller
@RequestMapping("/users")
public class UserController {

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public String getUser(@PathVariable Long id, Model model) {
        // 处理 GET 请求
        return "user-detail";
    }
}

@GetMapping

@GetMapping 是 @RequestMapping(method = RequestMethod.GET) 的简写形式,专门用于处理 HTTP GET 请求。

@RestController
public class UserController {

    @GetMapping("/users/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.findById(id);
    }
}

@PostMapping

@PostMapping 是 @RequestMapping(method = RequestMethod.POST) 的简写形式,专门用于处理 HTTP POST 请求。

@RestController
public class UserController {

    @PostMapping("/users")
    public User createUser(@RequestBody User user) {
        return userService.save(user);
    }
}

@PutMapping

@PutMapping 是 @RequestMapping(method = RequestMethod.PUT) 的简写形式,专门用于处理 HTTP PUT 请求。

@RestController
public class UserController {

    @PutMapping("/users/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody User user) {
        user.setId(id);
        return userService.update(user);
    }
}

@DeleteMapping

@DeleteMapping 是 @RequestMapping(method = RequestMethod.DELETE) 的简写形式,专门用于处理 HTTP DELETE 请求。

@RestController
public class UserController {

    @DeleteMapping("/users/{id}")
    public ResponseEntity<?> deleteUser(@PathVariable Long id) {
        userService.deleteById(id);
        return ResponseEntity.ok().build();
    }
}

@RequestParam

@RequestParam 用于从请求参数中获取值。它可以用于获取查询参数、表单数据等。

@GetMapping("/users/search")
public List<User> searchUsers(@RequestParam String name,
                             @RequestParam(required = false, defaultValue = "0") int page) {
    return userService.findByName(name, page);
}

@RequestBody

@RequestBody 用于将 HTTP 请求的正文部分转换为对象。常用于处理 JSON 数据。

@PostMapping("/users")
public User createUser(@RequestBody User user) {
    // 将请求体中的 JSON 数据转换为 User 对象
    return userService.save(user);
}

@PathVariable

@PathVariable 用于从 URL 路径中提取变量值。例如,在 /users/{id} 中,可以使用 @PathVariable 获取 id 的值。

@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) {
    // 从 URL 路径中提取 id 参数
    return userService.findById(id);
}

@Autowired

@Autowired 是 Spring 的注解,用于自动装配依赖。Spring 容器会自动寻找匹配的 bean 并注入到标注了此注解的字段或方法中。

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    // 使用注入的 userRepository
}

@Service

@Service 是 Spring 的一个 stereotype 注解,用于标记服务层组件。它通常用于业务逻辑类上。

@Service
public class UserService {

    public User save(User user) {
        // 业务逻辑
        return userRepository.save(user);
    }
}

@Repository

@Repository 是 Spring 的一个 stereotype 注解,用于标记数据访问层组件。它通常用于 DAO 类上,并提供持久化异常转换。

@Repository
public interface UserRepository extends JpaRepository<User, Long> {

    List<User> findByName(String name);
}

@ResponseBody

@ResponseBody 用于将方法返回值直接写入 HTTP 响应体。通常用于返回 JSON 或 XML 数据。

@Controller
public class UserController {

    @GetMapping("/users/{id}")
    @ResponseBody
    public User getUser(@PathVariable Long id) {
        // 返回值将被序列化并写入响应体
        return userService.findById(id);
    }
}

@Operation

@Operation 是 Swagger 提供的一个注解,用于方法级别的 API 文档描述。它允许你为方法添加标题、描述、请求参数、响应结果等信息。

import io.swagger.v3.oas.annotations.Operation;

@Operation(value = "新增用户")
public CommonResult<Long> createUser(@Valid @RequestBody UserSaveReqVO reqVO) {
    Long id = userService.createUser(reqVO);
    return success(id);
}

@PreAuthorize

@PreAuthorize 是 Spring Security 提供的一个注解,用于方法级别的权限控制。它允许你使用 SpEL (Spring Expression Language) 表达式来定义权限检查逻辑。

 @PostMapping("/create")
    @Operation(summary = "新增用户")
    @PreAuthorize("@ss.hasPermission('system:user:create')")
    public CommonResult<Long> createUser(@Valid @RequestBody UserSaveReqVO reqVO) {
        Long id = userService.createUser(reqVO);
        return success(id);
    }

@Validated

@Validated 是 Spring 框架中的一个注解,用于方法级别的参数验证。它允许你使用 JSR-303/JSR-349 标准的注解(如 @NotNull、@Size 等)来验证方法参数。

import org.springframework.validation.annotation.Validated;
import jakarta.validation.Valid;

@Validated
public class UserService {
    public User save(@Valid @RequestBody User user) {
        // 业务逻辑
        return userRepository.save(user);
    }
}

@Resource

@Resource 是 Java 标准提供的一个注解,用于依赖注入。它允许你按名称或类型注入依赖。

import jakarta.annotation.Resource;

public class UserController {
    @Resource
    private UserService userService;
    // 使用注入的 userService
}

@Override

@Override 是 Java 中的一个关键字,用于表示一个方法重写了父类中的方法。使用 @Override 注解可以提高代码的可读性和可维护性,并且在方法签名错误时会编译报错。

@Override
public String toString() {
    return "User{" +
            "id=" + id +
            ", name='" + name + '\'' +
            '}';
}

@Transactional

@Transactional 是 Spring 框架中的一个注解,用于声明式事务管理。它允许你将事务逻辑从业务逻辑中分离出来,简化了事务处理的代码。

import org.springframework.transaction.annotation.Transactional;
@Transactional
public class UserService {
    public User save(User user) {
        // 业务逻辑
        return userRepository.save(user);
    }
    public User update(User user) {
        // 业务逻辑
        return userRepository.save(user);
    }

@LogRecord

@LogRecord 是 Yudao 框架提供的一个注解,用于方法级别的日志记录。它允许你为方法添加日志标题、描述、参数、结果等信息。

Copyright ©2025 moweiwei