在 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 {@Autowiredprivate 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 {@Autowiredprivate 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 {@PostMappingpublic 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 中常用的注解总结。这些注解可以大大提高开发效率,使代码更加简洁和易于维护。在实际开发中,可以根据具体需求选择合适的注解来实现功能。