当前位置: 首页 > news >正文

springboot 常用各种注释的含义

在Spring Boot中,注解是框架的核心组成部分,它们提供了声明式的方式来配置应用程序。以下是一些关键注解及其含义的详细说明:

1. 核心启动注解

@SpringBootApplication
  • 作用:这是一个组合注解,相当于同时使用了@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan
  • 场景:标注在主应用类上,用于启动Spring Boot应用。
@SpringBootApplication
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}

2. 组件扫描与自动配置

@ComponentScan
  • 作用:自动扫描指定包下的所有@Component@Service@Repository@Controller等组件。
  • 默认范围:如果不指定包路径,默认扫描当前类所在包及其子包。
@EnableAutoConfiguration
  • 作用:根据classpath中的依赖自动配置Spring Boot应用(例如,检测到spring-boot-starter-web会自动配置嵌入式Tomcat服务器)。
  • 排除配置:可通过exclude参数排除特定的自动配置类。
@Configuration
  • 作用:标注一个类为Java配置类,相当于XML配置文件。
  • 配合使用:通常与@Bean注解一起使用。
@Configuration
public class AppConfig {@Beanpublic MyService myService() {return new MyServiceImpl();}
}

3. Bean定义与依赖注入

@Component
  • 作用:通用的组件注解,被Spring扫描后注册为Bean。
  • 子注解@Service@Repository@Controller是其特定场景的变种。
@Service
  • 作用:标注业务逻辑层组件(Service层)。
@Repository
  • 作用:标注数据访问层组件(DAO层),并提供自动的异常转换。
@Controller
  • 作用:标注Web控制器,处理HTTP请求。
@RestController
  • 作用:相当于@Controller + @ResponseBody,直接返回JSON/XML等数据。
@Autowired
  • 作用:自动注入依赖的Bean,支持构造器注入、字段注入和setter注入。
  • 注意:构造器注入是Spring官方推荐的方式。
@Service
public class UserService {private final UserRepository userRepository;@Autowired // 构造器注入(可省略@Autowired)public UserService(UserRepository userRepository) {this.userRepository = userRepository;}
}

4. Web开发注解

@RequestMapping
  • 作用:映射HTTP请求到控制器的处理方法。
  • 变种@GetMapping@PostMapping@PutMapping@DeleteMapping
@RequestBody
  • 作用:将HTTP请求的Body部分反序列化为Java对象。
@ResponseBody
  • 作用:将方法返回值直接作为HTTP响应Body。
@PathVariable
  • 作用:获取URL路径中的变量(如/users/{id})。
@RequestParam
  • 作用:获取URL查询参数(如?page=1&size=10)。
@RestController
@RequestMapping("/api/users")
public class UserController {@GetMapping("/{id}")public User getUser(@PathVariable Long id) {return userService.getUserById(id);}@PostMappingpublic User createUser(@RequestBody User user) {return userService.createUser(user);}
}

5. 配置属性绑定

@ConfigurationProperties
  • 作用:将配置文件(如application.properties)中的属性映射到Java类。
  • 前缀:通过prefix参数指定配置的前缀。
@ConfigurationProperties(prefix = "app")
public class AppProperties {private String name;private int port;// getters/setters
}
@Value
  • 作用:注入单个配置属性值(如${app.name})。

6. 条件注解

@ConditionalOnClass
  • 作用:当类路径下存在指定类时才加载配置。
@ConditionalOnMissingBean
  • 作用:当容器中不存在指定Bean时才创建。
@Profile
  • 作用:根据激活的环境(如devprod)加载不同的配置。

7. 事务管理

@Transactional
  • 作用:声明方法或类需要事务管理,支持传播行为和隔离级别配置。

8. 异步处理

@Async
  • 作用:声明方法为异步方法,需要配合@EnableAsync使用。

9. 定时任务

@Scheduled
  • 作用:声明定时执行的方法,支持fixedRatefixedDelaycron表达式。
  • 启用:需要在主类添加@EnableScheduling

10. 测试注解

@SpringBootTest
  • 作用:启动完整的Spring应用上下文进行集成测试。
@WebMvcTest
  • 作用:只测试Web层组件(如Controller)。
@DataJpaTest
  • 作用:只测试JPA数据访问层。

总结

Spring Boot注解通过约定大于配置的原则,极大简化了开发流程。理解这些注解的含义和使用场景,是高效开发Spring Boot应用的关键。建议结合官方文档深入学习每个注解的细节。

相关文章:

  • 深度学习实战文档图像矫正
  • Ubuntu 多网卡安全路由配置(SSH 不断线版)
  • AWS CloudFormation深度解析:构建现代云原生应用基础设施
  • Kafka消费者客户端源码深度解析:从架构到核心流程
  • Java同步机制四大工具对比
  • Java死锁的例子
  • 微信小程序:实现左侧菜单、右侧内容、表单、新增按钮等组件封装
  • 微信小程序传参过来了,但是数据没有获取到
  • 计算机网络学习笔记:TCP可靠传输实现、超时重传时间选择
  • FPGA基础 -- Verilog 禁止语句
  • 电力物联网,5G/4G通讯终端,电力系统通信
  • openstack的实现原理
  • c++读写锁
  • 基于YOLOv10算法的交通信号灯检测与识别
  • Arduino入门教程:11、直流步进驱动
  • 选择标签词汇功能(单选多选),在文本框展示
  • DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar),日历_项目里程碑示例(CalendarView01_22)
  • LeetCode 1358.包含所有三种字符的子字符串数目
  • 暑期前端训练day1
  • 前端适配方案之 flexible.js 到 postcss-px-to-viewport-8-plugin插件演进
  • 链接网站怎么做/企业网站有哪些平台
  • app制作平台官网/国外seo网站
  • 随州北京网站建设/惠州seo优化服务
  • 用phpmysql做网站/营销策略包括哪些内容
  • 简单网页制作模板代码/南宁seo优化公司
  • 紫色网站模板/关键词排名网络推广