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

SpringBoot常用注解

一、核心启动注解

    

@SpringBootApplication
用在主启动类上,是以下三个注解的组合:

  • @SpringBootConfiguration:标记当前类为配置类(继承自@Configuration

  • @EnableAutoConfiguration:启用自动配置(根据依赖自动配置Bean)

  • @ComponentScan:扫描当前包及子包下的组件(@Component@Service等)

@SpringBootApplication 
public class MyApp { public static void main(String[] args) { SpringApplication.run(MyApp.class, args); } 
} 

二、Bean声明与作用域 

  

注解用途示例
@Component通用组件注解,标记为Spring管理的Bean@Component public class MyUtil { ... }
@Service业务层组件(@Component的特化)@Service public class UserService { ... }
@Repository数据访问层组件(DAO层)@Repository public class UserDao { ... }
@Controller/@RestController控制层组件(后者= @Controller + @ResponseBody@RestController public class UserController { ... }
@Configuration声明配置类,内部用@Bean定义Bean

 

@Configuration 
public class AppConfig { @Bean public DataSource dataSource() { ... } // 返回Bean对象 
} 

@Scope | 指定Bean作用域(如 singletonprototype) | @Bean @Scope("prototype") public Task task() { ... } | 

 三、依赖注入(DI)注解

       1 @Autowired

类型自动注入Bean(默认必须存在,加required=false可忽略

@Service 
public class UserService { @Autowired // 注入UserDao实例 private UserDao userDao; 
} 

      2 @Resource 

名称注入Bean(JDK提供,支持name属性指定Bean名

@RestController 
public class UserController { @Resource(name = "userService") private UserService userService; 
} 

      3 @Qualifier

与@Autowired配合,按名称指定注入哪个Bean(解决多个同类型Bean冲突)

@Autowired 
@Qualifier("mysqlService") // 注入名为mysqlService的Bean 
private DbService dbService; 

对比

     @Autowired  +  @Qualifier  = 按类型+名称注入

     @Resource  =  直接按名称注入(无需搭配)

四、Web请求处理注解

     路由映射

注解等价写法用途

@GetMapping("/path")

@RequestMapping(method=RequestMethod.GET)

处理GET请求

@PostMapping("/path")

@RequestMapping(method=RequestMethod.POST)

处理POST请求

@PutMapping

-处理PUT请求(更新资源)

@DeleteMapping

-处理DELETE请求

参数获取

注解用途示例

@PathVariable

从URL路径获取参数

@GetMapping("/user/{id}") public User getById(@PathVariable Long id) { ... }

@RequestParam

从URL查询参数获取值

@GetMapping("/list") public List<User> list(@RequestParam("page") int page) { ... }

@RequestBody

解析请求体为Java对象(如JSON)

@PostMapping("/create") public void create(@RequestBody User user) { ... }

@ResponseBody

将方法返回值转为JSON响应体

已内置于@RestController

五、配置与属性注入 

   1 . @Value

注入单个配置项(application.properties/yml中的值)

@Value("${app.page.size}") 
private int pageSize; // 注入app.page.size=10 

    2. @ConfigurationProperties

批量绑定配置到Java对象(推荐)

@Component 
@ConfigurationProperties(prefix = "app") 
public class AppConfig { private String name; private int version; // 必须有setter方法 
} 

 

# application.properties 
app.name=MyApp 
app.version=1.0 

      3.  @PropertySource

加载自定义配置文件

@Configuration 
@PropertySource("classpath:custom.properties") 
public class CustomConfig { ... } 

六、高级功能注解

   1. @Transactional

声明事务管理(方法/类级别)

@Service 
public class OrderService { @Transactional public void createOrder(Order order) { ... } 
} 

    2. 全局异常处理

@ControllerAdvice // 全局控制器增强 
public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) // 捕获所有异常 public ResponseEntity<String> handleException(Exception e) { return ResponseEntity.status(500).body(e.getMessage()); } 
} 

      3. 定时任务

@EnableScheduling // 主类启用定时任务 
@Component 
public class MyTask { @Scheduled(fixedRate = 5000) // 每5秒执行 public void job() { ... } 
} 

对比相似注解

  • Autowired    vs     @Resource
  • @Controller   vs    @RestController
  • @Value   vs     @ConfigurationProperties

一文掌握 Spring Boot 常用注解,保姆级整理,建议收藏!

SpringBoot常用注解与注意事项-腾讯云开发者社区-腾讯云

Spring Boot 常用注解汇总 - overfit.cn

 

http://www.xdnf.cn/news/1056367.html

相关文章:

  • C++ Builder xe 关于ListView的自然排序功能排序效果与Windows资源管理器相同
  • 蛋白分析工具和数据库
  • 鼓励建设性对抗,反对攻击性评论
  • 计量经济学EViews软件题与证明题预测
  • Java 多线程轮流打印 ABC 的 4 种实现方式详解
  • 关于脉冲功率技术的认识
  • 【Python训练营打卡】day53 @浙大疏锦行
  • Java30:SpringBoot3
  • 数据库优化实战分享
  • Python 基础语法(3)【适合0基础】
  • 你听过网关支付吗?它是什么?
  • 2.7 获取激光雷达数据与避障
  • 重复文件检测提取(C#编写的winform项目源码)
  • 柬埔寨 - 高棉语 点阵方式详解
  • 华晨宇火星演唱会郑州开唱 中西乐交融编曲再升级
  • linux 下 Doris 单点部署
  • 2.4.2 ASPICE的集成与系统测试
  • 1688 API 接口接入说明与文档
  • 键盘效率提升实战,快速训练指法与速度
  • PLC基础知识整理(三菱) - 扩展
  • Pico rp2040开发之Vscode插件+ c/c++独立环境搭建
  • 端侧大模型:边缘智能的破局之战——资源约束下的技术突围
  • cocos2 使用 Layout 组件后,子节点 Label 高度变化后,抖动问题
  • 第一章 绪论
  • Java事务隔离问题详解:脏读、不可重复读与幻读(含解决方案)
  • SpringCloud框架全面学习指南
  • strcpy 和 memcpy
  • Java的抽象类
  • Database Client:一款流行的VS Code数据库客户端插件
  • 修改Rocky Linux文件夹颜色