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

Spring 框架中常用注解和使用方法

Spring 框架中常用注解的详细解释与应用场景,结合核心功能和实际开发需求进行分类说明:

1.组件定义注解

1.1 @Component

  • 作用:通用注解,将普通 Java 类标记为 Spring 管理的 Bean,由容器实例化和管理,相当于 XML 中的 <bean> 标签。

  • 应用场景:非特定层次(如工具类、配置类)的组件声明。

  • 示例:

     @Component
     public class MyComponent { /* ... */ }

1.2 分层组件注解

  • @Controller:标记控制层(Web 层),处理 HTTP 请求并返回视图或数据。
  • @Service:标记服务层(业务逻辑层),封装复杂业务逻辑。
  • @Repository:标记数据访问层(DAO 层),处理数据库操作,支持异常转换(如 SQL 异常转 Spring DataAccessException)。
  • 区别:三者均为@Component的特化版本,通过语义化区分层次,增强代码可读性。

1.3 @RestController

  • 作用@Controller + @ResponseBody 的组合,用于 RESTful API 开发,方法返回值直接序列化为 JSON/XML。

  • 示例:

     @RestController
     public class UserController { 
         @GetMapping("/user")
         public User getUser() { /* ... */ }
     }

2.依赖注入注解

2.1 @Autowired

  • 作用:按类型(byType)自动注入依赖,支持字段、构造器、方法注入。若存在多个同类型 Bean,需配合 @Qualifier 指定名称。

  • 属性required=false 允许依赖为空。

  • 示例:

     @Service
     public class UserService {
         @Autowired
         private UserRepository userRepo;
     }

2.2 @Resource

  • 作用:按名称(byName)注入,属于 JSR-250 规范。默认按字段名匹配,若无匹配则按类型注入。
  • @Autowired 区别:
    • @Autowired 是 Spring 特有,默认按类型注入,需配合 @Qualifier 指定名称。
    • @Resource是 Java EE 标准,更灵活,适用于多实现类场景。

2.3 @Value

  • 作用:注入配置文件(如 application.properties)中的属性值,支持表达式和默认值。

  • 示例:

     @Value("${app.timeout:30}")
     private int timeout;

3.配置类与自动装配

3.1 @Configuration

  • 作用:标记配置类,替代 XML 配置文件,定义 Bean 的创建逻辑。

  • 示例:

     @Configuration
     public class AppConfig {
         @Bean
         public DataSource dataSource() { /* ... */ }
     }

3.2 @ComponentScan

  • 作用:指定 Spring 扫描的包路径,自动注册 @Component 及其派生注解的类为 Bean。
  • @SpringBootApplication 关系:@SpringBootApplication包含@ComponentScan,默认扫描启动类所在包及其子包。

3.3 @Bean

  • 作用:在配置类中定义 Bean,常用于第三方库(如数据库连接池)的实例化。

  • 示例:

     @Configuration
     public class DataSourceConfig {
         @Bean
         public DataSource druidDataSource() { return new DruidDataSource(); }
     }

4.Spring MVC 相关注解

4.1 @RequestMapping

  • 作用:映射 HTTP 请求到控制器方法,支持类和方法级路径,可指定请求方法(GET/POST 等)。

  • 简化注解@GetMapping@PostMapping 等,语义更明确。

  • 示例:

     @Controller
     @RequestMapping("/api")
     public class ApiController {
         @GetMapping("/users")
         public String listUsers() { /* ... */ }
     }

4.2 参数绑定注解

  • @PathVariable:绑定 URL 路径变量到方法参数。
     @GetMapping("/user/{id}")
     public User getUser(@PathVariable Long id) { /* ... */ }
  • @RequestParam:绑定请求参数到方法参数,支持默认值。

  • @RequestBody:将请求体 JSON 反序列化为 Java 对象。

5.条件注解与高级特性

5.1 @Conditional 系列

  • 作用:根据条件动态装配 Bean,如 @ConditionalOnClass(类路径存在时生效)、@ConditionalOnMissingBean(容器中无该 Bean 时生效)。
  • 应用场景:Spring Boot 自动配置的核心机制。

5.2 AOP 相关注解

  • @Aspect:定义切面类。
  • @Before/@After/@Around:定义通知类型,控制切面执行时机。

5.3 生命周期回调

  • @PostConstruct:Bean 初始化后执行的方法。
  • @PreDestroy:Bean 销毁前执行的方法。

6.Spring Boot 核心注解

6.1 @SpringBootApplication

  • 组成@Configuration + @EnableAutoConfiguration + @ComponentScan,标记主启动类。
  • 作用:启用自动配置、组件扫描和配置类定义。

6.2 @EnableAutoConfiguration

  • 原理:根据类路径依赖自动配置 Bean(如引入spring-boot-starter-web自动配置 Tomcat 和 Spring MVC)。

7.总结

  • 组件分层:通过 @Controller@Service@Repository 明确代码职责。
  • 依赖管理:优先使用 @Autowired 按类型注入,多实现场景用 @Qualifier@Resource
  • 配置简化@Configuration + @Bean 替代 XML,@SpringBootApplication 整合启动逻辑。
  • RESTful 开发@RestController + @RequestBody/@PathVariable 构建 API。

通过合理使用这些注解,可显著减少配置代码,提升开发效率和代码可维护性。

相关文章:

  • 如何管理需求变更
  • 做游戏的发展方向
  • Skyeye 云智能制造办公系统 VUE 版本 v3.15.13 发布
  • ChatGPT and Claude国内使用站点
  • CareUEyes护眼软件深度解析:为你的双眼保驾护航
  • 基于Gemini 生成 Gemini Embedding
  • 学习笔记之注册用户如何防止缓存穿透
  • 365天之第P10周:Pytorch实现车牌识别
  • OceanBase 4.3.3 AP 功能解析:物化视图
  • 嵌入式开发之STM32学习笔记day06
  • C语言:编程设计猜数游戏
  • 【Dify平台】Function Call 模式模式和ReAct模型有什么不同?
  • 大数据技术链路详解
  • 什么是数学建模?数学建模是将实际问题转化为数学问题
  • C++学习笔记(二十一)——文件读写
  • 蓝桥杯 阶乘约数
  • 使用matlab求伴随矩阵
  • 图像处理篇:图像预处理——从数据到模型的桥梁
  • SSH反向隧道
  • 2025年渗透测试面试题总结-某四字大厂面试复盘 一面(题目+回答)
  • 我国首部《人工智能气象应用服务办法》今天发布
  • 王毅:为改革完善全球治理作出金砖贡献
  • 直播电商行业代表呼吁:携手并肩伸出援手助力外贸企业攻坚克难
  • 大理杨徐邱再审上诉案宣判:驳回上诉,维持再审一审判决
  • 国务院任免国家工作人员:饶权任国家文物局局长
  • 中消协发布“五一”消费提示:践行“光盘行动”,抵制餐饮浪费