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
小米集团公司氛围 379人发布
查看14道真题和解析