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

Spring Boot 常用注解分类整理(含用法示例)

在Spring Boot开发中,注解是简化配置、实现功能的核心。以下是常用注解的分类整理,包含其作用和典型用法:

一、启动类与配置类注解

  1. @SpringBootApplication
    Spring Boot应用的核心注解,用于标识主启动类,整合了三个注解:
@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}
  • @SpringBootConfiguration:标识当前类为配置类(类似@Configuration
  • @EnableAutoConfiguration:开启自动配置(Spring Boot的核心特性)
  • @ComponentScan:自动扫描当前类所在包及子包的组件(如@Controller@Service等)
    用法:
  1. @Configuration
    标识当前类为配置类,替代传统XML配置文件,可通过@Bean定义Bean。
    用法:
@Configuration
public class AppConfig {@Bean // 定义一个Bean,默认名称为方法名public UserService userService() {return new UserService();}
}
  1. @Bean
    用于@Configuration类中,定义一个Spring管理的Bean,默认名称为方法名,可通过name属性指定。

二、组件注册注解( stereotype 注解)

用于标识类为Spring管理的组件,自动被@ComponentScan扫描并注册到容器中。

  • @Component:通用组件注解,适用于任何层。
  • @Controller:标识控制器类(MVC中的C层),处理HTTP请求。
  • @Service:标识服务类(业务逻辑层)。
  • @Repository:标识数据访问类(DAO层),自动处理数据库操作异常。

三、依赖注入注解

用于实现Bean之间的依赖注入(DI)。

  1. @Autowired
    按类型自动注入依赖,可用于构造方法、字段、setter方法。
    用法:
@Service
public class UserService {// 注入UserDao(按类型匹配)@Autowiredprivate UserDao userDao;
}
  1. @Qualifier
    配合@Autowired使用,当存在多个同类型Bean时,通过名称指定注入哪个。
@Autowired
@Qualifier("userDaoImpl") // 指定注入名称为userDaoImpl的Bean
private UserDao userDao;
  1. @Resource
    按名称注入依赖(JDK自带注解),名称可通过name属性指定,默认取字段名。
@Resource(name = "userDaoImpl")
private UserDao userDao;
  1. @Value
    注入配置文件中的值(如application.properties),支持SpEL表达式。
@Value("${app.name}") // 注入配置项app.name的值
private String appName;@Value("#{T(java.lang.Math).random() * 100}") // SpEL表达式
private double randomNum;

四、Web请求处理注解

  1. @RestController
    组合@Controller@ResponseBody,标识控制器类,所有方法返回值直接转为JSON(无需额外加@ResponseBody)。
  2. @RequestMapping
    映射HTTP请求(URL、方法、参数等),可用于类或方法上。
@RestController
@RequestMapping("/users") // 类级别映射:所有方法路径前缀为/users
public class UserController {@RequestMapping(value = "/{id}", method = RequestMethod.GET) // 方法级别映射public User getUser(@PathVariable Long id) {return userService.getUser(id);}
}
  1. HTTP方法专用注解
    简化@RequestMapping的method属性:
    • @GetMapping:处理GET请求(查)
    • @PostMapping:处理POST请求(增)
    • @PutMapping:处理PUT请求(改)
    • @DeleteMapping:处理DELETE请求(删)
  2. 请求参数绑定注解
@PostMapping
public User addUser(@RequestBody User user) { // 接收请求体的JSON并转为User对象return userService.addUser(user);
}@GetMapping("/search")
public List<User> search(@RequestParam(required = false) String name) { // 可选参数return userService.findByName(name);
}
  • @PathVariable:获取URL路径中的参数(如/users/{id}中的id)。
  • @RequestParam:获取URL查询参数(如/users?name=xxx中的name)。
  • @RequestBody:获取HTTP请求体中的数据(通常用于POST/PUT,接收JSON)。
    示例:

五、配置属性绑定注解

  1. @ConfigurationProperties
    将配置文件中的属性批量绑定到一个类上,通常配合@Component使用。
    示例:
@Component
@ConfigurationProperties(prefix = "app") // 绑定前缀为app的配置
public class AppConfig {private String name;private String version;// 需提供getter/setter
}

配置文件(application.properties):

app.name=demo
app.version=1.0.0

六、事务管理注解

  • @Transactional
    标识方法或类需要事务支持,Spring会自动管理事务的提交/回滚。
    用法:
@Service
public class UserService {@Transactional // 该方法开启事务public void updateUser(User user) {// 数据库操作(若异常则自动回滚)}
}

七、异常处理注解

  1. @ControllerAdvice
    标识全局异常处理类,配合@ExceptionHandler使用。
  2. @ExceptionHandler
    定义异常处理方法,指定处理的异常类型。
    示例:
@ControllerAdvice
public class GlobalExceptionHandler {// 处理NullPointerException@ExceptionHandler(NullPointerException.class)public ResponseEntity<String> handleNullPointerException(NullPointerException e) {return ResponseEntity.badRequest().body("空指针异常:" + e.getMessage());}
}

八、其他常用注解

  • @CrossOrigin:处理跨域请求,可用于类或方法。
@CrossOrigin(origins = "http://localhost:8080") // 允许来自该域名的跨域请求
@RestController
public class UserController { ... }
  • @Async:标识方法为异步执行(需配合@EnableAsync开启异步支持)。
  • @Scheduled:标识定时任务方法(需配合@EnableScheduling开启定时任务)。

这些注解覆盖了Spring Boot开发的核心场景,掌握它们能大幅提升开发效率。实际使用中,需根据具体业务场景选择合适的注解组合。

http://www.dtcms.com/a/436016.html

相关文章:

  • 运动网站设计江西商城网站建设
  • 如何做关于网站推广的培训公众号软文怎么写
  • Spring Boot 配置详解:从引导器到注解实战(初学者指南)
  • 网站建设的结论和体会苏州高端建站公司
  • 珠海建设局网站查公司业绩专业h5网站建设教程
  • 136、【OS】【Nuttx】【周边】效果呈现方案解析:strace 日志解析(二)
  • 呼市做网站建设的公司哪家好一个网站成本
  • 洛阳制作网站公司吗wordpress设置内存
  • wordpress vip会员主题企业seo顾问服务公司
  • 《进程概念(1)》
  • 北京企业模板建站南京今天重大新闻事件
  • Pulsar适配AI场景:从技术原理到实战落地
  • 石景山广州网站建设医院网站建设官网
  • 成都做网站的公司弄个小程序要多少钱
  • 手机报价网站大全宣传片拍摄内容
  • BTS7960 四轮前进测试 workable solution
  • 网站架设流程专门app软件制作费用
  • 计算机网站建设维护的目的wordpress 系统需求
  • 无形资产 网站建设官方网站建设与维护好处
  • 程序员用来做笔记的网站网站源码绑定域名
  • 网站建设开发ppt模板德州建设街小学网站
  • 【代码随想录day 34】 力扣 62.不同路径II
  • 哪些公司做网站好河南营销型网站建设
  • 做网站需要写程序绿色营销案例100例
  • 【Linux】进程间通信(1)
  • 域名所有人是网站名不能转出用凡科做网站要钱吗
  • asp.net网站开发上网站开发哪家公司电话
  • 个人做的网站有什么危险吗万网官网域名注册多少钱
  • 网站机房建设成本某公司网络营销现状分析
  • 服务器主机 网站安阳企业网站优化外包