1. @PostMapping
作用:将方法绑定到 HTTP POST 请求的特定路径上
用法:
@PostMapping("/login") // 绑定到 POST /login
@PostMapping("/employees") // 绑定到 POST /employees
@PostMapping("/users/{id}") // 路径变量
等价写法:
@RequestMapping(value = "/login", method = RequestMethod.POST)
常见 HTTP 方法注解:
- @GetMapping:GET 请求(查询)
- @PostMapping:POST 请求(新增)
- @PutMapping:PUT 请求(修改)
- @DeleteMapping:DELETE 请求(删除)
2. @RequestBody
作用:将 HTTP 请求体(JSON/XML)转换为 Java 对象
用法:
@PostMapping("/login")
public Result login(@RequestBody EmployeeLoginDTO dto) {// dto 自动从请求体 JSON 转换而来
}
请求示例:
POST /login
Content-Type: application/json{"username": "admin","password": "123456"
}
转换过程:
- Spring 读取请求体 JSON
- 使用 Jackson 库反序列化
- 创建 EmployeeLoginDTO 实例
- 调用 setter 方法填充属性
注意:
- 只能有一个 @RequestBody 参数
- 需要 Content-Type: application/json
- 配合 @Valid 做参数校验
3. @Autowired
作用:自动注入依赖对象(Spring 的依赖注入)
用法:
@RestController
public class EmployeeController {@Autowiredprivate EmployeeService employeeService; // 自动注入 Service@Autowiredprivate JwtProperties jwtProperties; // 自动注入配置
}
注入方式:
// 1. 字段注入(常用)
@Autowired
private EmployeeService employeeService;// 2. 构造器注入(推荐)
private final EmployeeService employeeService;
public EmployeeController(EmployeeService employeeService) {this.employeeService = employeeService;
}// 3. Setter 注入
@Autowired
public void setEmployeeService(EmployeeService employeeService) {this.employeeService = employeeService;
}
工作原理:
- Spring 容器启动时扫描 @Component、@Service、@Repository 等注解
- 创建 Bean 实例并放入容器
- 遇到 @Autowired 时,从容器中查找匹配的 Bean 注入
4. @Service
作用:标记业务逻辑层,Spring 会将其注册为 Bean
用法:
@Service
public class EmployeeServiceImpl implements EmployeeService {// 业务逻辑实现
}
等价注解:
@Component // 通用组件
@Service // 业务层(语义更明确)
@Repository // 数据访问层
@Controller // 控制层
特点:
- Spring 自动扫描并创建实例
- 支持依赖注入
- 支持事务管理(@Transactional)
- 单例模式(默认)
5. @Mapper
作用:标记 My
Batis 的 Mapper 接口,MyBatis 会为其创建代理实现
用法:
@Mapper
public interface EmployeeMapper extends BaseMapper<Employee> {@Select("select * from employee where username = #{username}")Employee getByUsername(String username);
}
工作原理:
- MyBatis 扫描 @Mapper 接口
- 为接口创建动态代理实现
- 将 SQL 注解或 XML 映射转换为实际数据库操作
配置扫描:
// 方式1:每个接口加 @Mapper
@Mapper
public interface EmployeeMapper { }// 方式2:包扫描(推荐)
@MapperScan("com.sky.mapper")
@SpringBootApplication
public class SkyApplication { }
工作原理:
- MyBatis 扫描 @Mapper 接口
- 为接口创建动态代理实现
- 将 SQL 注解或 XML 映射转换为实际数据库操作
配置扫描:
// 方式1:每个接口加 @Mapper
@Mapper
public interface EmployeeMapper { }// 方式2:包扫描(推荐)
@MapperScan("com.sky.mapper")
@SpringBootApplication
public class SkyApplication { }
注解组合使用示例
@RestController // 标记为控制器
@RequestMapping("/admin/employee") // 类级别路径
public class EmployeeController {@Autowired // 自动注入private EmployeeService employeeService;@PostMapping("/login") // 绑定 POST 请求@ApiOperation("员工登录") // 接口文档public Result<EmployeeLoginVO> login(@RequestBody // 从请求体获取@Valid // 参数校验EmployeeLoginDTO dto) {Employee employee = employeeService.login(dto);// 处理逻辑...return Result.success(vo);}
}
记忆要点
- @PostMapping:绑定 HTTP 请求路径
- @RequestBody:JSON 转 Java 对象
- @Autowired:自动注入依赖
- @Service:标记业务层 Bean
- @Mapper:标记数据访问接口