Spring Boot核心注解全解析

Spring Boot 常用注解详解

Spring Boot 通过注解简化了配置和开发流程,以下分类介绍核心注解及其应用场景。

@SpringBootApplication

组合注解,包含以下三个核心功能:

  • @SpringBootConfiguration:标记为配置类。
  • @EnableAutoConfiguration:启用自动配置。
  • @ComponentScan:自动扫描当前包及其子包的组件。
@SpringBootApplication
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}

@RestController

组合@Controller@ResponseBody,用于定义RESTful控制器,直接返回JSON/XML数据。

@RestController
@RequestMapping("/api")
public class UserController {
    @GetMapping("/users")
    public List<User> getUsers() {
        return userService.findAll();
    }
}

@RequestMapping

定义请求映射路径,支持指定HTTP方法、请求头等属性。

@RequestMapping(value = "/items", method = RequestMethod.GET)
public List<Item> getItems() {
    return itemService.list();
}

@GetMapping/@PostMapping

简化版请求映射,分别对应GET和POST方法。

@GetMapping("/detail/{id}")
public Item getDetail(@PathVariable Long id) {
    return itemService.findById(id);
}

@PathVariable

从URI模板中提取变量值。

@GetMapping("/users/{id}")
public User getUser(@PathVariable("id") Long userId) {
    return userService.getById(userId);
}

@RequestParam

绑定请求参数到方法参数,支持默认值设置。

@GetMapping("/search")
public List<User> searchUsers(@RequestParam(defaultValue = "") String keyword) {
    return userService.search(keyword);
}

@RequestBody

将HTTP请求体反序列化为Java对象。

@PostMapping("/create")
public User createUser(@RequestBody User user) {
    return userService.save(user);
}

@Autowired

自动依赖注入,可省略构造函数或setter方法。

@Service
public class OrderService {
    @Autowired
    private UserRepository userRepository;
}

@Service/@Repository/@Component

组件扫描标识:

  • @Service:业务逻辑层
  • @Repository:数据访问层
  • @Component:通用组件
@Service
public class PaymentService {
    // 业务逻辑实现
}

@Configuration/@Bean

定义配置类及Bean声明。

@Configuration
public class AppConfig {
    @Bean
    public DataSource dataSource() {
        return new HikariDataSource();
    }
}

@Value

注入配置文件属性值。

@Value("${app.timeout:5000}")
private int timeout;

@Profile

指定环境激活配置。

@Configuration
@Profile("prod")
public class ProdConfig {
    // 生产环境专用配置
}

@Scheduled

定时任务配置。

@Scheduled(fixedRate = 5000)
public void reportMetrics() {
    // 每5秒执行
}

@Transactional

声明式事务管理。

@Transactional
public void transferMoney(Long from, Long to, BigDecimal amount) {
    accountService.debit(from, amount);
    accountService.credit(to, amount);
}

@ExceptionHandler

控制器异常处理。

@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity<String> handleNotFound(ResourceNotFoundException ex) {
    return ResponseEntity.status(404).body(ex.getMessage());
}

@Conditional

条件化Bean注册。

@Bean
@ConditionalOnProperty(name = "cache.enabled", havingValue = "true")
public CacheManager cacheManager() {
    return new RedisCacheManager();
}

@Async

异步方法调用。

@Async
public void sendNotificationEmail(User user) {
    // 异步发送邮件
}

通过合理组合这些注解,可以显著减少样板代码,快速构建企业级应用。实际开发时应根据场景选择最合适的注解组合。

5G.okacbd182.asia/PoSt/1123_617101.HtM
5G.okacbd183.asia/PoSt/1123_350801.HtM
5G.okacbd184.asia/PoSt/1123_200684.HtM
5G.okacbd185.asia/PoSt/1123_967294.HtM
5G.okacbd186.asia/PoSt/1123_947936.HtM
5G.okacbd187.asia/PoSt/1123_463669.HtM
5G.okacbd188.asia/PoSt/1123_939725.HtM
5G.okacbd190.asia/PoSt/1123_049425.HtM
5G.okacbd191.asia/PoSt/1123_776961.HtM
5G.okacbd192.asia/PoSt/1123_753149.HtM
5G.okacbd182.asia/PoSt/1123_680040.HtM
5G.okacbd183.asia/PoSt/1123_389769.HtM
5G.okacbd184.asia/PoSt/1123_023444.HtM
5G.okacbd185.asia/PoSt/1123_175298.HtM
5G.okacbd186.asia/PoSt/1123_881528.HtM
5G.okacbd187.asia/PoSt/1123_486781.HtM
5G.okacbd188.asia/PoSt/1123_911860.HtM
5G.okacbd190.asia/PoSt/1123_758325.HtM
5G.okacbd191.asia/PoSt/1123_492928.HtM
5G.okacbd192.asia/PoSt/1123_682020.HtM
5G.okacbd182.asia/PoSt/1123_797598.HtM
5G.okacbd183.asia/PoSt/1123_268667.HtM
5G.okacbd184.asia/PoSt/1123_333601.HtM
5G.okacbd185.asia/PoSt/1123_767511.HtM
5G.okacbd186.asia/PoSt/1123_067789.HtM
5G.okacbd187.asia/PoSt/1123_679569.HtM
5G.okacbd188.asia/PoSt/1123_583921.HtM
5G.okacbd190.asia/PoSt/1123_578908.HtM
5G.okacbd191.asia/PoSt/1123_731817.HtM
5G.okacbd192.asia/PoSt/1123_104967.HtM
5G.okacbd182.asia/PoSt/1123_649456.HtM
5G.okacbd183.asia/PoSt/1123_401327.HtM
5G.okacbd184.asia/PoSt/1123_911232.HtM
5G.okacbd185.asia/PoSt/1123_932057.HtM
5G.okacbd186.asia/PoSt/1123_703552.HtM
5G.okacbd187.asia/PoSt/1123_399655.HtM
5G.okacbd188.asia/PoSt/1123_015916.HtM
5G.okacbd190.asia/PoSt/1123_562386.HtM
5G.okacbd191.asia/PoSt/1123_773191.HtM
5G.okacbd192.asia/PoSt/1123_982870.HtM
5G.okacbd182.asia/PoSt/1123_142278.HtM
5G.okacbd183.asia/PoSt/1123_224252.HtM
5G.okacbd184.asia/PoSt/1123_800658.HtM
5G.okacbd185.asia/PoSt/1123_354438.HtM
5G.okacbd186.asia/PoSt/1123_414504.HtM
5G.okacbd187.asia/PoSt/1123_612706.HtM
5G.okacbd188.asia/PoSt/1123_870174.HtM
5G.okacbd190.asia/PoSt/1123_110861.HtM
5G.okacbd191.asia/PoSt/1123_494026.HtM
5G.okacbd192.asia/PoSt/1123_968710.HtM
5G.okacbd182.asia/PoSt/1123_709642.HtM
5G.okacbd183.asia/PoSt/1123_447894.HtM
5G.okacbd184.asia/PoSt/1123_240491.HtM
5G.okacbd185.asia/PoSt/1123_616505.HtM
5G.okacbd186.asia/PoSt/1123_677991.HtM
5G.okacbd187.asia/PoSt/1123_978741.HtM
5G.okacbd188.asia/PoSt/1123_839662.HtM
5G.okacbd190.asia/PoSt/1123_551917.HtM
5G.okacbd191.asia/PoSt/1123_409193.HtM
5G.okacbd192.asia/PoSt/1123_863265.HtM
5G.okacbd193.asia/PoSt/1123_762595.HtM
5G.okacbd194.asia/PoSt/1123_495238.HtM
5G.okacbd195.asia/PoSt/1123_556702.HtM
5G.okacbd196.asia/PoSt/1123_649415.HtM
5G.okacbd197.asia/PoSt/1123_072312.HtM
5G.okacbd198.asia/PoSt/1123_952560.HtM
5G.okacbd199.asia/PoSt/1123_616873.HtM
5G.okacbd200.asia/PoSt/1123_047094.HtM
5G.okacbd203.asia/PoSt/1123_413405.HtM
5G.okacbd206.asia/PoSt/1123_449090.HtM
5G.okacbd193.asia/PoSt/1123_864179.HtM
5G.okacbd194.asia/PoSt/1123_237644.HtM
5G.okacbd195.asia/PoSt/1123_045471.HtM
5G.okacbd196.asia/PoSt/1123_565589.HtM
5G.okacbd197.asia/PoSt/1123_424505.HtM
5G.okacbd198.asia/PoSt/1123_831944.HtM
5G.okacbd199.asia/PoSt/1123_951335.HtM
5G.okacbd200.asia/PoSt/1123_300854.HtM
5G.okacbd203.asia/PoSt/1123_545906.HtM
5G.okacbd206.asia/PoSt/1123_420176.HtM

#牛客AI配图神器#

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务