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

spring常用注解

在 Spring 框架中,注解(Annotation)是实现依赖注入(DI)和声明式编程的核心工具。以下是一些常用的 Spring 注解,按功能分类介绍:

 1. 组件扫描与声明
 @Component
用途:标记一个类为 Spring 的组件,使其被 Spring 容器管理。
示例

  @Componentpublic class MyComponent {public void doSomething() {System.out.println("Doing something...");}}

@Service
用途:标记一个类为服务层组件,通常用于业务逻辑层。
示例:

  @Servicepublic class MyService {public void performService() {System.out.println("Performing service...");}}

@Repository
用途:标记一个类为数据访问层组件,通常用于 DAO(数据访问对象)。
示例:

  @Repositorypublic class MyRepository {public void saveData() {System.out.println("Saving data...");}}

@Controller
用途:标记一个类为控制器层组件,通常用于处理 HTTP 请求。
示例:

  @Controllerpublic class MyController {@RequestMapping("/hello")public String sayHello() {return "Hello, World!";}}

@RestController
用途:标记一个类为 RESTful 控制器,用于处理 RESTful 请求并直接返回数据(而非视图)。
示例:

  @RestControllerpublic class MyRestController {@GetMapping("/api/hello")public String sayHello() {return "Hello, World!";}}

@Configuration
用途:标记一个类为配置类,用于定义 Spring 的 Bean 或配置。
示例:

  @Configurationpublic class AppConfig {@Beanpublic MyComponent myComponent() {return new MyComponent();}}

2. 依赖注入
@Autowired
用途:自动注入依赖的 Bean。
示例:

  @Servicepublic class MyService {@Autowiredprivate MyRepository myRepository;public void performService() {myRepository.saveData();}}

@Qualifier
用途:用于指定注入的 Bean 的名称,当存在多个相同类型的 Bean 时使用。
示例:

  @Autowired@Qualifier("myRepository")private MyRepository repository;

 @Resource
用途:与 `@Autowired` 类似,但更符合 Java 标准,支持按名称注入。
示例:

  @Resource(name = "myRepository")private MyRepository repository;

 3. Bean 配置
 `@Bean`
用途:用于在配置类中声明一个 Bean。
示例:

  @Configurationpublic class AppConfig {@Beanpublic MyComponent myComponent() {return new MyComponent();}}

 `@Scope`
用途:定义 Bean 的作用域(如 `singleton`、`prototype` 等)。
示例:

  @Component@Scope("prototype")public class MyComponent {// ...}

 4. 生命周期
 `@PostConstruct`
用途:标记一个方法在 Bean 初始化后执行。
示例:

  @Componentpublic class MyComponent {@PostConstructpublic void init() {System.out.println("Bean initialized");}}

`@PreDestroy`
用途:标记一个方法在 Bean 销毁前执行。
示例:

  @Componentpublic class MyComponent {@PreDestroypublic void destroy() {System.out.println("Bean destroyed");}}

5. 事务管理
 `@Transactional`
用途:声明方法在事务上下文中执行。
示例:

  @Servicepublic class MyService {@Transactionalpublic void performService() {// 数据库操作}}

6. AOP(面向切面编程)
 `@Aspect`
用途:标记一个类为切面类。
示例:

  @Aspect@Componentpublic class MyAspect {@Before("execution(* com.example.MyService.*(..))")public void beforeAdvice() {System.out.println("Before method execution");}}

 `@Before`、`@After`、`@AfterReturning`、`@AfterThrowing`、`@Around`
用途:定义切点的执行时机。
示例:

  @AfterReturning(pointcut = "execution(* com.example.MyService.*(..))", returning = "result")public void afterReturning(Object result) {System.out.println("Method returned: " + result);}

 7. 测试相关
 `@SpringBootTest`
用途:用于 Spring Boot 应用的集成测试。
示例:

  @SpringBootTestpublic class MyApplicationTests {@Autowiredprivate MyService myService;@Testpublic void testService() {myService.performService();}}
http://www.xdnf.cn/news/5570.html

相关文章:

  • 从海洋生物找灵感:造个机器人RoboPteropod,它能在水下干啥?
  • 【C++贪心】P11044 [蓝桥杯 2024 省 Java B] 食堂|普及
  • 华为FAT AP配置 真机
  • Java学习手册:服务网关与路由
  • 《Effective Python》第1章 Pythonic 思维详解——深入理解流程控制中的解构利器match
  • Bravery靶机通关笔记
  • 机器学习管道 pipeline
  • OpenCV中Canny、Sobel和Laplacian边界检测算法原理和使用示例
  • django之视图
  • OpenCV图像金字塔详解:原理、实现与应用
  • 医院保洁智能化管理新范式:诺怀云医院后勤解决方案的实践探索
  • edge设置位IE模式打开网页
  • Java设计模式之装饰器模式:从基础到高级的全面解析(万字解析)
  • 【速写】KV-cache与解码的再探讨(以束搜索实现为例)
  • C 语言_可变参数宏详解
  • 硅基计划2.0 学习总结 壹 Java初阶
  • pytorch模型画质增强简单实现
  • STM32入门教程——GPIO输出
  • Java设计模式之代理模式:从入门到精通(保姆级教程)
  • http和https的区别
  • 键盘RGB矩阵与LED指示灯(理论部分)
  • 外出充电不发愁,倍思便携式移动电源成出行新宠
  • 数据治理域——数据治理体系建设
  • HTML17:表单初级验证
  • 通义千问席卷日本!开源界“卷王”阿里通义千问成为日本AI发展新基石
  • 【氮化镓】GaN在不同电子能量损失的SHI辐射下的损伤
  • Spring MVC参数传递
  • 图论拓扑排序
  • 前端 CSS 样式书写与选择器 基础知识
  • 反转链表 - 简单