在 Java 开发中,Spring 和 Spring Boot 框架广泛应用于企业级应用开发。这两个框架提供了丰富的注解,使得开发更加高效和便捷。本文将对 Spring 和 Spring Boot 中常用的注解进行总结。
一、Spring 常用注解
1. @Component
-
作用:用于将普通的 Java 类标记为 Spring 中的 Bean。被标记的类将被 Spring 容器管理,可以通过依赖注入的方式使用。
-
示例:
@Component
public class UserService {
//...
}
2. @Autowired
- 作用 :自动装配 Bean。当一个类的成员变量、方法参数或构造函数参数被标记为
@Autowired
时,Spring 容器会自动将匹配类型的 Bean 注入到该成员变量、方法参数或构造函数中。
@Component
public class OrderService {
@Autowired
private UserService userService;
//...
}
3. @Service
-
作用:用于标注业务逻辑层的组件。通常用于表示服务类,这些类通常包含业务逻辑和处理数据的方法。
-
示例:
@Service
public class UserServiceImpl implements UserService {
//...
}
4. @Repository
-
作用:用于标注数据访问层的组件。通常用于表示数据访问对象(DAO)类,这些类负责与数据库进行交互。
-
示例:
@Repository
public class UserDaoImpl implements UserDao {
//...
}
5. @Controller
-
作用:用于标注表示层的组件。通常用于表示控制器类,这些类处理 HTTP 请求并返回响应。
-
示例:
@Controller
public class UserController {
@Autowired
private UserService userService;
//...
}
6. @RequestMapping
-
作用:用于将 HTTP 请求映射到特定的方法上。可以在类级别和方法级别使用。
-
示例:
@Controller
@RequestMapping("/users")
public class UserController {
@RequestMapping("/list")
public String listUsers() {
//...
return "user/list";
}
}
7. @PathVariable
-
作用 :用于获取 URL 中的路径变量。当 URL 中的部分内容是动态的时,可以使用
@PathVariable
注解将其绑定到方法参数上。 -
示例:
@Controller
@RequestMapping("/users")
public class UserController {
@RequestMapping("/{id}")
public String getUserById(@PathVariable("id") Long id) {
//...
return "user/detail";
}
}
8. @RequestParam
-
作用:用于获取 HTTP 请求中的参数。可以将请求参数绑定到方法参数上。
-
示例:
@Controller
@RequestMapping("/users")
public class UserController {
@RequestMapping("/search")
public String searchUsers(@RequestParam("keyword") String keyword) {
//...
return "user/search";
}
}
二、Spring Boot 常用注解
1. @SpringBootApplication
-
作用 :这是一个组合注解,包含了
@Configuration
、@EnableAutoConfiguration
和@ComponentScan
。用于标记一个主类,该主类是 Spring Boot 应用的入口点。 -
示例:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
2. @RestController
-
作用 :用于标注控制器类,该类中的方法将返回 JSON、XML 或其他格式的响应。相当于
@Controller
和@ResponseBody
的组合。 -
示例:
@RestController
@RequestMapping("/api/users")
public class UserApiController {
//...
}
3. @GetMapping
-
作用 :用于将 HTTP GET 请求映射到特定的方法上。是
@RequestMapping(method = RequestMethod.GET)
的简化形式。 -
示例:
@RestController
@RequestMapping("/api/users")
public class UserApiController {
@GetMapping("/{id}")
public User getUserById(@PathVariable("id") Long id) {
//...
return user;
}
}
4. @PostMapping
- 作用 :用于将 HTTP POST 请求映射到特定的方法上。是
@RequestMapping(method = RequestMethod.POST)
的简化形式。 - 示例:
收起
java
复制
@RestController
@RequestMapping("/api/users")
public class UserApiController {
@PostMapping
public User createUser(@RequestBody User user) {
//...
return user;
}
}
5. @PutMapping
- 作用 :用于将 HTTP PUT 请求映射到特定的方法上。是
@RequestMapping(method = RequestMethod.PUT)
的简化形式。 - 示例:
收起
java
复制
@RestController
@RequestMapping("/api/users")
public class UserApiController {
@PutMapping("/{id}")
public User updateUser(@PathVariable("id") Long id, @RequestBody User user) {
//...
return user;
}
}
6. @DeleteMapping
-
作用 :用于将 HTTP DELETE 请求映射到特定的方法上。是
@RequestMapping(method = RequestMethod.DELETE)
的简化形式。 -
示例:
@RestController
@RequestMapping("/api/users")
public class UserApiController {
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable("id") Long id) {
//...
}
}
7. @Value
-
作用:用于注入配置文件中的属性值。可以将配置文件中的属性值注入到类的成员变量、方法参数或构造函数参数中。
-
示例:
@Component
public class MyService {
@Value("${my.property}")
private String myProperty;
//...
}
8. @ConfigurationProperties
-
作用:用于将配置文件中的属性绑定到 Java 对象上。可以将一组相关的属性绑定到一个 Java 对象中,方便管理和使用配置。
-
示例:
@Component
@ConfigurationProperties(prefix = "myapp")
public class AppConfig {
private String property1;
private int property2;
// getters and setters
}
以上是 Spring 和 Spring Boot 中常用的注解总结。这些注解可以大大提高开发效率,使代码更加简洁和易于维护。在实际开发中,可以根据具体需求选择合适的注解来实现功能。