Spring常用注解汇总

embedded/2025/3/29 23:28:10/

1. IOC容器与Bean管理

注解说明示例
@Component通用注解,标记类为Spring Bean

@Component

public class MyService { ... }

@Controller标记Web控制器(应用在MVC的控制层)

@Controller

public class UserController { ... }

@Service标记业务逻辑层组件(Service层)

@Service

public class UserService { ... }

@Repository标记数据访问层组件(DAO层),自动转换数据访问异常

@Repository

public class UserDao { ... }

@Configuration标记配置类,用于定义Bean

@Configuration

public class AppConfig { ... }

@Bean在配置类中定义Bean,常用于第三方库集成

@Bean

public DataSource dataSource() { return new HikariDataSource(); }

@Autowired自动注入依赖(按类型匹配,优先构造器注入)

@Autowired

private UserService userService;

@Qualifier按名称注入Bean(解决同类型多个Bean的歧义)

@Autowired

@Qualifier("mysqlDataSource")

DataSource dataSource;

@Primary标记优先注入的Bean

@Bean

@Primary

public DataSource primaryDataSource() { ... }

@Value注入配置文件中的值

@Value("${app.timeout}")

private int timeout;

@Scope

定义创建Bean的模式(方法上得有@Bean)

类型包括:Singleton、Prototype、Request、Session

2. Web开发(Spring MVC)

注解说明示例
@RestController@Controller + @ResponseBody,用于RESTAPI

@RestController

public class UserApi { ... }

@RequestMapping映射HTTP请求到方法@RequestMapping(value = "/users", method = RequestMethod.GET)
@GetMapping处理HTTP GET请求,用于查询资源

@GetMapping("/{id}")

public User getById(@PathVariable Long id)

@PostMapping处理HTTP POST请求,用于创建新资源(通常配合@RequestBody接收请求体数据)

@PostMapping("/create")

public User create(@RequestBody User user)

@PutMapping处理HTTP PUT请求,用于全量更新资源(需明确指定资源标识如/users/{id})
@PutMapping("/users/{id}")
public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User user
) {...}
@DeleteMapping处理HTTP DELETE请求,用于删除资源
@DeleteMapping("/users/{id}")
public ResponseEntity<Void> deleteUser(@PathVariable Long id) {...}
@PathVariable从URL路径中获取变量@GetMapping("/users/{id}")
@RequestParam获取请求参数(支持默认值和类型转换)public List<User> search(@RequestParam(defaultValue = "10") int limit)
@RequestBody将请求体(JSON/XML)转换为Java对象@PostMapping public User create(@RequestBody User user)
@ResponseBody将返回值写入响应体(如返回JSON)

@ResponseBody

public User getUser() { ... }

@CrossOrigin允许跨域请求@CrossOrigin(origins = "http://example.com")

3. 数据访问与事务

注解说明示例
@Transactional声明事务(方法或级别)

@Transactional

public void updateUser(User user) { ... }

@EntityJPA注解(标记数据库实体类)

@Entity

@Table(name = "users")

public class User { ... }

@Repository数据库访问层组件(Spring Data JPA自动实现接口)

@Repository

public interface UserRepository extends JpaRepository<User, Long> { ... }

@Query自定义JPQL或原生SQL查询

@Query("SELECT u FROM User u WHERE u.age > :age")

List<User> findByAge(@Param("age") int ag

4. AOP与切面编程

注解说明示例
@Aspect声明切面类

@Aspect

@Component

public class LoggingAspect { ... }

@Before前置通知(方法执行前执行)@Before("execution(* com.example.service.*.*(..))")
@After后置通知(方法执行后执行,无论是否异常)@After("execution(* com.example.service.*.*(..))")
@Around环绕通知(可控制方法执行流程)@Around("execution(* com.example.service.*.*(..))")
@Pointcut定义切点表达式(复用切点逻辑)@Pointcut("execution(* com.example.service.*.*(..))")

5. SpringBoot特有注解

注解说明示例
@SpringBootApplication启动类注解(组合了@Configuration,@EnableAutoConfiguration,)

@SpringBootApplication

public class MyApp { ... }

@EnableAutoConfiguration启动自动配置(Spring Boot根据依赖自动配置Bean)通常由@SpringBootApplication包含
@ConditionalOnProperty根据配置文件条件注册Bean@Bean @ConditionalOnProperty(name = "feature.enabled", havingValue = "true")
@SpringBootTest启动完整Spring上下文集成测试@SpringBootTest class MyIntegrationTest { ... }

http://www.ppmy.cn/embedded/174610.html

相关文章

Java学习------初识JVM体系结构

1. 介绍 JVM对应的是一套规范&#xff0c;然后不同公司根据这个规范有着不同的实现。例如: HotSpot: 这个是由Oracle公司开发的&#xff0c;也是目前最常用的虚拟机实现&#xff0c;是默认的Java虚拟机&#xff0c;包含在Oracle JDK和OpenJDK中JRockit: 同样也是由Oracle公司…

SSL 和 TLS 认证

SSL&#xff08;Secure Sockets Layer&#xff0c;安全套接层&#xff09;认证是一种用于加密网络通信和验证服务器身份的安全技术。它是TLS&#xff08;Transport Layer Security&#xff0c;传输层安全协议&#xff09;的前身&#xff0c;虽然现在大多数应用使用的是TLS&…

模型部署实战:PyTorch生产化指南

‌一、为什么要做模型部署&#xff1f;‌ 模型部署是将训练好的模型‌投入实际应用‌的关键步骤&#xff0c;涉及&#xff1a; 模型格式转换&#xff08;TorchScript/ONNX&#xff09;性能优化&#xff08;量化/剪枝&#xff09;构建API服务移动端集成 本章使用ResNet18实现图…

STM32配套程序接线图

1 工程模板 2 LED闪烁 3LED流水灯 4蜂鸣器 5按键控制LED 6光敏传感器控制蜂鸣器 7OLED显示屏 8对射式红外传感器计次 9旋转编码器计次 10 定时器定时中断 11定时器外部时钟 12PWM驱动LED呼吸灯 13 PWM驱动舵机 14 PWM驱动直流电机 15输入捕获模式测频率 16PWMI模式测频率占空…

JVM 垃圾回收器分类及其特点详解

JVM 的垃圾回收&#xff08;Garbage Collection, GC&#xff09;主要分为 分代回收模型 下的不同垃圾回收器&#xff08;Garbage Collectors&#xff09;&#xff0c;每种回收器针对不同场景设计。以下是常见的垃圾回收器分类及其特点&#xff1a; 1. 按工作模式分类 垃圾回收…

Ubuntu 24 常用命令方法

文章目录 环境说明1、账号管理1.1、启用 root 2、包管理工具 apt & dpkg2.1、apt 简介 & 阿里源配置2.2、dpkg 简介2.3、apt 和 dpkg 两者之间的关系2.4、常用命令 3、启用 ssh 服务4、防火墙5、开启远程登录6、关闭交换分区7、build-essential&#xff08;编译和开发软…

碰一碰发视频saas系统技术源头一站式开发文档

碰一碰发视频系统技术源头一站式开发文档 一、引言 在数字化信息传播高速发展的当下&#xff0c;如何让视频分享更便捷、高效&#xff0c;成为商家和开发者们关注的焦点。“碰一碰发视频”系统以其独特的交互方式和强大的功能优势&#xff0c;为视频分享领域带来了革命性变革。…

idea问题(三)pom文件显示删除线

一、问题 1、现象 2、原因 分析原因和出现的流程&#xff1a;创建子模块的时候因为名称错误了&#xff0c;并且通过修改模块模块名称后&#xff0c;又删除了模块&#xff0c;因删除不干净。再次建立了同名模块&#xff0c;会让IDEA认为你再次新建的项目是已经被删除的项目。 …