Java:Spring/SpringBoot 核心注解全景总结(附极简Demo)

📅 2026/7/26 9:12:17
Java:Spring/SpringBoot 核心注解全景总结(附极简Demo)
本文汇总Spring 核心基础注解、SpringBoot 专属注解、Web开发注解、事务AOP注解、配置属性绑定注解五大类高频核心注解采用「注解名称核心作用适用场景极简可运行Demo」表格全景呈现覆盖日常开发99%常用场景适合收藏备查。前置说明所有Demo均为极简代码可直接在SpringBoot项目中运行无需额外复杂配置默认基于SpringBoot 2.x/3.x通用规范。一、Spring 核心IOC容器注解Bean注册与依赖注入该类注解核心作用将对象交给Spring容器管理实现Bean的创建、注册、依赖注入是Spring最基础核心能力。注解名称核心作用适用场景极简Demo代码Component通用Bean注册注解将普通类交给Spring容器实例化、管理默认单例通用业务工具类、公共组件无专属分层的类Componentpublic class CommonUtil {public void printLog() {System.out.println(通用组件工具类);}}Service继承Component语义化标识业务逻辑层Bean功能与Component一致Service业务逻辑层类处理核心业务逻辑Servicepublic class UserService {public String getUserInfo() {return 用户业务数据;}}Repository继承Component语义化标识数据访问层Bean可适配数据库异常转换DAO数据访问层、数据库操作类Repositorypublic class UserDao {public void selectUser() {System.out.println(查询用户数据);}}Controller继承Component语义化标识控制层Bean用于接收Web请求传统Web控制层页面跳转、请求分发Controllerpublic class IndexController {// 页面跳转RequestMapping(/index)public String index() {return index.html;}}RestController组合注解ControllerResponseBody接口返回JSON数据无需手动序列化前后端分离项目API接口控制层最常用RestControllerRequestMapping(/user)public class UserController {GetMapping(/info)public String getUser() {return {\name\:\test\};}}Autowired自动依赖注入默认按类型注入BeanSpring核心注入方式容器内Bean的依赖自动装配绝大多数注入场景RestControllerpublic class UserController {// 自动注入UserServiceAutowiredprivate UserService userService;}Qualifier配合Autowired使用解决同类型多Bean冲突按Bean名称精准注入一个接口多个实现类需要指定具体实现类注入的场景AutowiredQualifier(userServiceImpl)private UserService userService;ResourceJSR原生注解默认按名称注入无名称则按类型替代AutowiredQualifier简单注入场景优先按名称匹配Bean// 默认按变量名userService匹配BeanResourceprivate UserService userService;Configuration标识配置类替代XML配置文件类中可通过Bean注册第三方Bean自定义配置、注册第三方工具类BeanConfigurationpublic class AppConfig {// 注册第三方BeanBeanpublic RestTemplate restTemplate() {return new RestTemplate();}}Bean在配置类中使用手动注册Bean到Spring容器可自定义Bean属性第三方类、无法加Component的类注册为容器Bean同上Configuration DemoScope指定Bean作用域默认singleton单例支持prototype多例等需要多例Bean、请求级、会话级Bean场景ComponentScope(prototype) // 每次获取新建对象public class MultiBean {}Lazy延迟加载Bean默认容器启动初始化加注解后首次使用才初始化重量级Bean、启动耗时较长的组件优化启动速度LazyComponentpublic class BigDataUtil {}二、SpringBoot 核心启动与配置注解该类注解为SpringBoot专属实现自动配置、包扫描、项目启动、配置加载等核心能力是SpringBoot项目的基石。注解名称核心作用适用场景极简Demo代码SpringBootApplicationSpringBoot启动核心组合注解整合3大注解1.Configuration启动类为配置类2.EnableAutoConfiguration自动配置3.ComponentScan自动包扫描项目主启动类唯一入口SpringBootApplicationpublic class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}EnableAutoConfiguration开启SpringBoot自动配置根据依赖jar自动装配组件无需手动配置自定义启动类、拆分自动配置场景新版可省略ConfigurationEnableAutoConfigurationpublic class StartConfig {}ComponentScan指定包扫描路径扫描指定包下所有带Component派生注解的类项目包结构特殊需要自定义扫描范围SpringBootApplicationComponentScan(basePackages com.demo)public class DemoApplication {}PropertySource加载自定义外部properties配置文件需要拆分配置文件加载自定义配置ConfigurationPropertySource(classpath:custom.properties)public class ConfigLoad {}ConfigurationProperties批量绑定配置文件参数将yml/properties配置映射到实体类大批量配置参数统一管理ComponentConfigurationProperties(prefix user)public class UserConfig {private String name;private Integer age;// getter/setter}Value单个配置参数注入读取yml/properties配置值少量零散配置参数注入Componentpublic class AppInfo {Value(${app.version:1.0})private String version;}ConditionalOnClass条件注解存在指定类时才初始化当前Bean自适应配置依赖第三方组件存在才生效BeanConditionalOnClass(RestTemplate.class)public RestTemplate restTemplate() {return new RestTemplate();}三、Web开发核心注解请求接收与响应该类注解用于接口请求映射、参数接收、请求头/请求体解析、跨域配置等Web核心场景。注解名称核心作用适用场景极简Demo代码RequestMapping通用请求路径映射支持所有请求方式GET/POST/PUT/DELETE类/方法级别统一请求路径配置RestControllerRequestMapping(/api)public class ApiController {RequestMapping(/test)public String test() { return success; }}GetMapping仅映射GET请求Restful风格专用查询类接口读数据GetMapping(/get/{id})public String getById(PathVariable Integer id) {return 查询IDid;}PostMapping仅映射POST请求Restful风格专用新增、提交数据接口写数据PostMapping(/add)public String add() { return 新增成功; }PutMapping/DeleteMapping分别映射PUT修改、DELETE删除请求数据修改、删除接口PutMapping(/update)public String update() { return 修改成功; }DeleteMapping(/del/{id})public String del(PathVariable Integer id) { return 删除成功; }PathVariable获取URL路径中的参数路径变量Restful风格路径传参如 /user/1001参考GetMapping DemoRequestParam获取URL拼接参数?keyvalue可设置默认值、是否必填普通表单传参、URL查询参数GetMapping(/list)public String list(RequestParam(defaultValue 1) Integer page) {return 页码page;}RequestBody接收前端JSON格式请求体自动解析为Java对象前后端分离POST/PUT提交JSON数据PostMapping(/save)public String save(RequestBody User user) {return 用户名user.getName();}RequestHeader获取请求头中的指定参数获取Token、设备信息、请求编码等请求头数据GetMapping(/token)public String getToken(RequestHeader(token) String token) {return 请求令牌token;}CrossOrigin开启跨域支持解决前端跨域请求报错前后端分离项目本地调试跨域RestControllerCrossOrigin // 类全局跨域public class UserController {}ResponseBody将方法返回值转为JSON响应体返回数据而非页面普通Controller类中部分接口返回JSON数据Controllerpublic class DemoController {ResponseBodyRequestMapping(/json)public String json() { return data; }}四、AOP与事务核心注解该类注解实现Spring AOP切面编程、数据库事务控制是业务解耦、数据一致性的核心支撑。注解名称核心作用适用场景极简Demo代码Aspect标识切面类开启AOP切面编程能力日志记录、权限校验、接口耗时统计、限流等通用横切逻辑AspectComponentpublic class LogAspect {// 切面逻辑}Pointcut定义切入点指定哪些方法需要被切面拦截统一配置切面拦截范围Pointcut(execution(* com.demo.service.*.*(..)))public void servicePoint() {}Before/After/Around前置通知/后置通知/环绕通知拦截方法前后执行自定义逻辑方法执行前后日志、参数校验、耗时统计Around(servicePoint())public Object around(ProceedingJoinPoint joinPoint) throws Throwable {long start System.currentTimeMillis();Object result joinPoint.proceed();System.out.println(耗时(System.currentTimeMillis()-start));return result;}EnableAspectJAutoProxy开启AOP自动代理SpringBoot新版可省略默认开启手动开启AOP、自定义代理模式ConfigurationEnableAspectJAutoProxypublic class AopConfig {}Transactional开启数据库事务方法执行异常自动回滚保证数据一致性新增、修改、删除等数据库操作需要事务一致性场景Servicepublic class OrderService {Transactional(rollbackFor Exception.class)public void createOrder() {// 数据库操作异常自动回滚}}EnableTransactionManagement开启事务管理SpringBoot新版默认开启无需手动添加SSM传统项目手动开启事务ConfigurationEnableTransactionManagementpublic class TransactionConfig {}五、常用拓展核心注解汇总开发中高频使用的拓展注解涵盖缓存、异步、全局异常、参数校验等场景。注解名称核心作用适用场景极简Demo代码Async开启方法异步执行脱离主线程提升接口响应速度日志记录、消息推送、文件处理等非实时耗时操作// 启动类添加EnableAsyncAsyncpublic void sendMsg() {// 异步执行推送逻辑}EnableAsync开启全局异步支持配合Async使用项目需要异步任务执行场景SpringBootApplicationEnableAsyncpublic class DemoApplication {}Cacheable开启方法缓存查询结果缓存下次直接读取缓存高频查询、数据变动少的接口Cacheable(value userCache, key #id)public User getUserById(Integer id) {// 数据库查询逻辑}Valid开启参数校验配合JSR303注解实现入参自动校验接口入参非空、长度、格式校验PostMapping(/add)public String add(Valid RequestBody User user) {return 校验通过;}GlobalExceptionHandler/ExceptionHandler全局异常捕获统一处理接口异常返回规范错误信息项目全局异常统一处理RestControllerAdvicepublic class GlobalException {ExceptionHandler(Exception.class)public String error(Exception e) {return 系统异常e.getMessage();}}六、核心注解速记总结1.Bean注册四件套Component、Service、Repository、Controller语义分层功能一致2.依赖注入三剑客Autowired按类型、Qualifier按名称、Resource自适应3.SpringBoot核心SpringBootApplication一站式启动、ConfigurationBean手动注册Bean4.Web接口核心RestController GetMapping/PostMapping RequestBody/PathVariable5.业务核心Transactional事务、Aspect切面、Async异步