一、Spring Boot 核心注解
1.1 启动类注解
@SpringBootApplication
:
作用:标记 Spring Boot 应用的启动类,是
@Configuration
、@EnableAutoConfiguration
和@ComponentScan
的组合注解。使用场景:用于主启动类,启动 Spring Boot 应用。
示例:
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
1.2 配置类注解
@Configuration
:
作用:标记类为配置类,替代 XML 配置文件。
使用场景:定义 Bean 或加载其他配置。
示例
@Configuration public class AppConfig { @Bean public MyService myService() { return new MyService(); } }
@EnableAutoConfiguration
:
作用:启用 Spring Boot 的自动配置功能。
使用场景:自动配置 Spring 应用,根据依赖自动配置 Bean。
示例
@EnableAutoConfiguration public class MyApplication { // 启动类 }
@ComponentScan
:
作用:自动扫描指定包下的组件(如
@Component
、@Service
、@Repository
等)。使用场景:扫描并注册 Bean。
示例:
@ComponentScan(basePackages = "com.example") public class MyApplication { // 启动类 }
1.3 Web 相关注解
@RestController
:
作用:标记类为 RESTful 控制器,是
@Controller
和@ResponseBody
的组合注解。使用场景:用于构建 RESTful API。
示例:
@RestController public class UserController { @GetMapping("/users") public List<User> getUsers() { return userService.getAllUsers(); } }
@RequestMapping
:
作用:映射 HTTP 请求到控制器方法。
使用场景:定义请求路径和请求方法。
示例:
@RequestMapping(value = "/users", method = RequestMethod.GET) public List<User> getUsers() { return userService.getAllUsers(); }
@PathVariable
:
作用:绑定 URL 路径变量到方法参数。
使用场景:获取 RESTful API 中的路径参数。
示例:
@GetMapping("/users/{id}") public User getUserById(@PathVariable Long id) { return userService.getUserById(id); }
@RequestParam
:
作用:绑定 HTTP 请求参数到方法参数。
使用场景:获取查询参数。
示例:
@GetMapping("/users") public User getUserByName(@RequestParam String name) { return userService.getUserByName(name); }
@GetMapping
作用
用于处理 HTTP GET 请求。
GET 请求通常用于获取资源。
使用场景
查询数据。
获取资源的详细信息。
不涉及数据修改的操作。
示例
@RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; // 获取所有用户 @GetMapping public List<User> getAllUsers() { return userService.getAllUsers(); } // 根据ID获取用户 @GetMapping("/{id}") public User getUserById(@PathVariable Long id) { return userService.getUserById(id); } }
@PostMapping
作用
用于处理 HTTP POST 请求。
POST 请求通常用于创建新资源。
使用场景
提交表单数据。
创建新资源。
涉及数据新增的操作。
示例:
@RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; // 创建新用户 @PostMapping public User createUser(@RequestBody User user) { return userService.createUser(user); } }
@PutMapping
作用
用于处理 HTTP PUT 请求。
PUT 请求通常用于更新资源(全量更新)。
使用场景
更新资源的全部字段。
替换现有资源。
示例:
@RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; // 更新用户信息 @PutMapping("/{id}") public User updateUser(@PathVariable Long id, @RequestBody User user) { return userService.updateUser(id, user); } }
@DeleteMapping
作用
用于处理 HTTP DELETE 请求。
DELETE 请求通常用于删除资源。
使用场景
删除资源。
涉及数据删除的操作
示例:
@RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; // 删除用户 @DeleteMapping("/{id}") public void deleteUser(@PathVariable Long id) { userService.deleteUser(id); } }
1.4 依赖注入相关注解
@Autowired
:
作用:自动注入依赖的 Bean,默认按类型(byType)注入。
使用场景:注入 Service、Repository 等组件。
示例:
@Service public class UserService { @Autowired private UserRepository userRepository; }
@Qualifier
:
作用:当有多个相同类型的 Bean 时,指定具体的 Bean。
使用场景:解决 Bean 冲突。
示例:
@Autowired @Qualifier("userService") private UserService userService;
@Value
:
作用:注入配置文件中的属性值。
使用场景:读取
application.properties
或application.yml
中的配置。示例:
@Value("${app.name}") private String appName;
二、MyBatis 常用注解
2.1 Mapper 相关注解
@Mapper
:
作用:标记接口为 MyBatis 的 Mapper 接口。
使用场景:定义数据访问层接口。
示例:
@Mapper public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User getUserById(Long id); }
@MapperScan
:
作用:指定 MyBatis Mapper 接口的扫描路径。
使用场景:用于启动类,扫描 Mapper 接口。
示例:
@SpringBootApplication @MapperScan("com.example.mapper") public class MyApplication { // 启动类 }
2.2 SQL 相关注解
@Select
:
作用:定义查询 SQL 语句。
使用场景:查询数据。
示例:
@Select("SELECT * FROM user WHERE id = #{id}") User getUserById(Long id);
@Insert
:
作用:定义插入 SQL 语句。
使用场景:插入数据。
示例:
@Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})") void insertUser(User user);
@Update
:
作用:定义更新 SQL 语句。
使用场景:更新数据。
示例:
@Update("UPDATE user SET name = #{name} WHERE id = #{id}") void updateUser(User user);
@Delete
:
作用:定义删除 SQL 语句。
使用场景:删除数据。
示例:
@Delete("DELETE FROM user WHERE id = #{id}") void deleteUser(Long id);
2.3 结果映射注解
@Results
和@Result
:
作用:映射查询结果到 Java 对象。
使用场景:处理复杂查询结果的映射。
示例:
@Results({ @Result(property = "id", column = "id"), @Result(property = "name", column = "name") }) @Select("SELECT * FROM user") List<User> getAllUsers();
三、JPA 常用注解
3.1 实体类注解
@Entity
:
作用:标记类为实体类,映射到数据库表。
使用场景:定义数据库表对应的实体类。
示例:
@Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; }
@Id
:
作用:标记属性为主键。
使用场景:定义实体类的主键字段。
示例:
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;
四、Lombok 常用注解
4.1 简化代码注解
@Data
:
作用:自动生成 getter、setter、
toString
、equals
和hashCode
方法。使用场景:简化实体类的代码。
示例:
@Data public class User { private Long id; private String name; }
五、总结
Spring Boot 注解
用于启动应用、依赖注入、Web 请求处理、配置管理等。
核心注解:
@SpringBootApplication
、@RestController
、@Autowired
、@Value
等。MyBatis 注解
用于定义 SQL 语句、映射查询结果、事务管理等。
核心注解:
@Mapper
、@Select
、@Insert
、@Update
、@Delete
等。JPA 注解
用于定义实体类、映射数据库表、处理主键生成等。
核心注解:
@Entity
、@Id
、@GeneratedValue
等。Lombok 注解
用于简化代码,自动生成 getter、setter 等方法。
核心注解:
@Data
、@Getter
、@Setter
等。通过合理使用这些注解,可以显著提高开发效率,减少冗余代码,并确保代码的可读性和可维护性。