Spring Boot 常用注解详解与利用指南

打印 上一主题 下一主题

主题 1993|帖子 1993|积分 5979

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一、焦点启动注解

1. @SpringBootApplication



  • 作用:Spring Boot应用的入口注解,组合了@Configuration、@EnableAutoConfiguration和@ComponentScan
  • 利用场景:主启动类上必须利用
  • 示例
    1. @SpringBootApplication
    2. public class MyApplication {
    3.     public static void main(String[] args) {
    4.         SpringApplication.run(MyApplication.class, args);
    5.     }
    6. }
    复制代码
2. @EnableAutoConfiguration



  • 作用:启用Spring Boot的自动配置机制
  • 利用场景:当必要自定义自动配置时利用
  • 注意:通常不必要单独利用,@SpringBootApplication已包罗
3. @Configuration



  • 作用:标记类为配置类,替代XML配置
  • 利用场景:定义Bean配置时利用
  • 示例
    1. @Configuration
    2. public class AppConfig {
    3.     @Bean
    4.     public MyService myService() {
    5.         return new MyServiceImpl();
    6.     }
    7. }
    复制代码
4. @ComponentScan



  • 作用:自动扫描并注册Bean到Spring容器
  • 利用场景:必要自定义扫描路径时利用
  • 示例
    1. @SpringBootApplication
    2. @ComponentScan({"com.example.main", "com.example.controllers"})
    3. public class MyApplication {
    4.     // ...
    5. }
    复制代码

二、Bean定义与管理

1. @Bean



  • 作用:声明方法返回的对象由Spring管理
  • 利用场景:配置类中定义第三方库组件的Bean
  • 示例
    1. @Configuration
    2. public class AppConfig {
    3.     @Bean
    4.     public RestTemplate restTemplate() {
    5.         return new RestTemplate();
    6.     }
    7. }
    复制代码
2. @Component/@Service/@Repository/@Controller



  • 作用:将类标记为Spring组件,分别对应通用组件、服务层、数据层和控制层
  • 利用场景:开发业务组件时根据分层选择对应注解
  • 示例
    1. @Service
    2. public class UserServiceImpl implements UserService {
    3.     // 业务逻辑
    4. }
    5. @Repository
    6. public class UserRepositoryImpl implements UserRepository {
    7.     // 数据访问逻辑
    8. }
    复制代码
3. @ConfigurationProperties



  • 作用:将配置文件属性绑定到Bean
  • 利用场景:必要会合管理配置属性时
  • 示例
    1. @ConfigurationProperties(prefix = "app")
    2. public class AppProperties {
    3.     private String name;
    4.     private String version;
    5.     // getters/setters
    6. }
    复制代码
4. @Scope



  • 作用:定义Bean的作用域(singleton, prototype等)
  • 利用场景:必要非单例Bean时
  • 示例
    1. @Bean
    2. @Scope("prototype")
    3. public MyPrototypeBean myPrototypeBean() {
    4.     return new MyPrototypeBean();
    5. }
    复制代码

三、依靠注入

1. @Autowired



  • 作用:按类型自动注入依靠
  • 利用场景:必要注入依靠时首选
  • 示例
    1. @Service
    2. public class UserService {
    3.     @Autowired
    4.     private UserRepository userRepository;
    5. }
    复制代码
2. @Qualifier



  • 作用:指定注入的Bean名称(办理多个同类型Bean冲突)
  • 利用场景:有多个同类型Bean时
  • 示例
    1. @Autowired
    2. @Qualifier("primaryDataSource")
    3. private DataSource dataSource;
    复制代码
3. @Value



  • 作用:注入属性值
  • 利用场景:注入简单配置值
  • 示例
    1. 3. @Value
    2. 作用:注入属性值
    3. 使用场景:注入简单配置值
    4. 示例:
    复制代码

四、Web MVC开发

1. @RestController/@Controller



  • 作用:标记类为Web控制器
  • 利用场景:开发REST API或传统MVC控制器
  • 示例
    1. @RestController
    2. @RequestMapping("/api/users")
    3. public class UserController {
    4.     @GetMapping("/{id}")
    5.     public User getUser(@PathVariable Long id) {
    6.         // ...
    7.     }
    8. }
    复制代码
2. @RequestMapping/@GetMapping/@PostMapping等



  • 作用:映射HTTP请求路径和方法
  • 利用场景:定义API端点
  • 示例
    1. @PostMapping("/create")
    2. public ResponseEntity<User> createUser(@RequestBody UserDto userDto) {
    3.     // ...
    4. }
    复制代码
3. @RequestBody/@ResponseBody



  • 作用:请求体绑定和相应体转换
  • 利用场景:REST API开发
  • 示例
    1. @PostMapping
    2. public User create(@RequestBody User user) {
    3.     return userService.save(user);
    4. }
    复制代码
4. @PathVariable/@RequestParam



  • 作用:从URL路径或参数中获取值
  • 利用场景:必要获取URL中的变量或查询参数
  • 示例
    1. @GetMapping("/search")
    2. public List<User> searchUsers(@RequestParam String keyword) {
    3.     // ...
    4. }
    复制代码

五、数据访问

1. @Entity/@Table



  • 作用:定义JPA实体类和对应表
  • 利用场景:数据库表映射
  • 示例
    1. @Entity
    2. @Table(name = "users")
    3. public class User {
    4.     @Id
    5.     @GeneratedValue(strategy = GenerationType.IDENTITY)
    6.     private Long id;
    7.     // ...
    8. }
    复制代码
2. @Transactional



  • 作用:声明事务
  • 利用场景:必要事务管理的方法或类
  • 示例
    1. @Service
    2. public class UserService {
    3.     @Transactional
    4.     public void updateUser(User user) {
    5.         // ...
    6.     }
    7. }
    复制代码
3. @RepositoryRestResource



  • 作用:将JPA堆栈袒露为REST端点
  • 利用场景:快速开发RESTful数据服务
  • 示例
    1. @RepositoryRestResource(path = "users")
    2. public interface UserRepository extends JpaRepository<User, Long> {
    3. }
    复制代码

六、测试相关

1. @SpringBootTest



  • 作用:加载完备应用上下文进行集成测试
  • 利用场景:集成测试
  • 示例
    1. @SpringBootTest
    2. class MyIntegrationTests {
    3.     @Autowired
    4.     private MyService myService;
    5.     // 测试方法
    6. }
    复制代码
2. @WebMvcTest



  • 作用:仅测试Web层
  • 利用场景:控制器单位测试
  • 示例
    1. @WebMvcTest(UserController.class)
    2. class UserControllerTests {
    3.     @Autowired
    4.     private MockMvc mockMvc;
    5.     // 测试方法
    6. }
    复制代码

七、高级特性

1. @EnableCaching/@Cacheable



  • 作用:启用缓存和声明可缓存方法
  • 利用场景:必要方法结果缓存时
  • 示例
    1. @Service
    2. public class UserService {
    3.     @Cacheable("users")
    4.     public User getUser(Long id) {
    5.         // 只有第一次会执行,后续从缓存获取
    6.     }
    7. }
    复制代码
2. @EnableScheduling/@Scheduled



  • 作用:启用定时任务和定义任务执行时间
  • 利用场景:必要定时执行任务时
  • 示例
    1. @Component
    2. public class MyScheduler {
    3.     @Scheduled(fixedRate = 5000)
    4.     public void doTask() {
    5.         // 每5秒执行一次
    6.     }
    7. }
    复制代码
3. @Async



  • 作用:标记方法为异步执行
  • 利用场景:必要异步执行耗时操作时
  • 示例
    1. @Service
    2. public class AsyncService {
    3.     @Async
    4.     public void asyncMethod() {
    5.         // 异步执行
    6.     }
    7. }
    复制代码

最佳实践建议


  • 分层清楚:严格遵循Controller-Service-Repository分层,利用对应注解
  • 合理利用自动配置:优先利用Spring Boot的自动配置,须要时通过@ConfigurationProperties自定义
  • 依靠注入选择:构造函数注入优于字段注入(特别是必选依靠)
  • 事务管理:在Service层利用@Transactional,保持事务边界清楚
  • 测试策略:根据测试目标选择合适的测试注解(单位测试用@WebMvcTest,集成测试用@SpringBootTest)
  • REST API开发:优先利用@RestController和HTTP方法特定注解(@GetMapping等)




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

麻花痒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表