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:標記數據訪問接口