Spring Boot核心注解速查手册
Spring Boot 常用注解分类整理
核心注解
@SpringBootApplication
组合注解,包含@Configuration、@EnableAutoConfiguration和@ComponentScan,标记主启动类。
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
@RestController
组合@Controller和@ResponseBody,用于RESTful控制器。
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/users")
public List<User> getUsers() {
return userService.findAll();
}
}
配置相关注解
@Configuration
标记类为配置类,替代XML配置。
@Configuration
public class AppConfig {
@Bean
public DataSource dataSource() {
return new HikariDataSource();
}
}
@Bean
声明方法返回值为Spring管理的Bean。
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Value
注入配置文件中的属性值。
@Value("${server.port}")
private String port;
@ConfigurationProperties
批量绑定配置属性到Java对象。
@ConfigurationProperties(prefix = "mail")
public class MailProperties {
private String host;
private int port;
// getters/setters
}
依赖注入注解
@Autowired
自动装配依赖,可配合@Qualifier指定具体Bean。
@Service
public class UserService {
@Autowired
private UserRepository repository;
}
@Qualifier
解决多个同类型Bean的歧义。
@Autowired
@Qualifier("mysqlDataSource")
private DataSource dataSource;
Web开发注解
@RequestMapping
定义请求映射路径,支持HTTP方法限定。
@PostMapping("/create")
public ResponseEntity<User> createUser(@RequestBody User user) {
return ResponseEntity.ok(userService.save(user));
}
@PathVariable
提取URL路径参数。
@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) {
return userService.findById(id);
}
@RequestParam
获取查询参数或表单数据。
@GetMapping("/search")
public List<User> search(@RequestParam String keyword) {
return userService.search(keyword);
}
@RequestBody
将请求体反序列化为Java对象。
@PostMapping("/update")
public void updateUser(@RequestBody User user) {
userService.update(user);
}
数据访问注解
@Repository
标记数据访问组件,自动处理数据库异常。
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
@Transactional
声明事务边界。
@Transactional
public void transferMoney(Long fromId, Long toId, BigDecimal amount) {
// 业务逻辑
}
测试相关注解
@SpringBootTest
加载完整Spring上下文进行集成测试。
@SpringBootTest
class UserServiceTest {
@Autowired
private UserService userService;
}
@MockBean
注入Mock对象到Spring容器。
@SpringBootTest
class PaymentServiceTest {
@MockBean
private PaymentGateway mockGateway;
}
条件装配注解
@ConditionalOnProperty
根据配置属性决定是否创建Bean。
@Bean
@ConditionalOnProperty(name = "cache.enabled", havingValue = "true")
public CacheManager cacheManager() {
return new EhCacheManager();
}
@Profile
指定环境激活的组件。
@Configuration
@Profile("prod")
public class ProductionConfig {
// 生产环境专用配置
}
定时任务注解
@Scheduled
声明定时任务执行规则。
@Scheduled(cron = "0 0 9 * * ?")
public void generateDailyReport() {
reportService.generate();
}
@EnableScheduling
启用定时任务功能。
@SpringBootApplication
@EnableScheduling
public class MyApp { ... }
异常处理注解
@ControllerAdvice
全局异常处理器。
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity<ErrorResponse> handleNotFound(ResourceNotFoundException ex) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new ErrorResponse(ex.getMessage()));
}
}
安全相关注解
@EnableWebSecurity
启用Spring Security配置。
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated();
}
}
@PreAuthorize
方法级权限控制。
@PreAuthorize("hasRole('ADMIN')")
public void deleteUser(Long userId) {
userRepository.deleteById(userId);
}
BbS.okapop082.sbs/PoSt/1122_898203.HtM
BbS.okapop083.sbs/PoSt/1122_584743.HtM
BbS.okapop084.sbs/PoSt/1122_868705.HtM
BbS.okapop085.sbs/PoSt/1122_313975.HtM
BbS.okapop086.sbs/PoSt/1122_803627.HtM
BbS.okapop087.sbs/PoSt/1122_434905.HtM
BbS.okapop088.sbs/PoSt/1122_691904.HtM
BbS.okapop090.sbs/PoSt/1122_141805.HtM
BbS.okapop091.sbs/PoSt/1122_423049.HtM
BbS.okapop092.sbs/PoSt/1122_177916.HtM
BbS.okapop082.sbs/PoSt/1122_160921.HtM
BbS.okapop083.sbs/PoSt/1122_835642.HtM
BbS.okapop084.sbs/PoSt/1122_810440.HtM
BbS.okapop085.sbs/PoSt/1122_725070.HtM
BbS.okapop086.sbs/PoSt/1122_272146.HtM
BbS.okapop087.sbs/PoSt/1122_013499.HtM
BbS.okapop088.sbs/PoSt/1122_928663.HtM
BbS.okapop090.sbs/PoSt/1122_052541.HtM
BbS.okapop091.sbs/PoSt/1122_459940.HtM
BbS.okapop092.sbs/PoSt/1122_414983.HtM
BbS.okapop082.sbs/PoSt/1122_409490.HtM
BbS.okapop083.sbs/PoSt/1122_549866.HtM
BbS.okapop084.sbs/PoSt/1122_955979.HtM
BbS.okapop085.sbs/PoSt/1122_102204.HtM
BbS.okapop086.sbs/PoSt/1122_678345.HtM
BbS.okapop087.sbs/PoSt/1122_540119.HtM
BbS.okapop088.sbs/PoSt/1122_584484.HtM
BbS.okapop090.sbs/PoSt/1122_871360.HtM
BbS.okapop091.sbs/PoSt/1122_469182.HtM
BbS.okapop092.sbs/PoSt/1122_292027.HtM
BbS.okapop082.sbs/PoSt/1122_743510.HtM
BbS.okapop083.sbs/PoSt/1122_647597.HtM
BbS.okapop084.sbs/PoSt/1122_266306.HtM
BbS.okapop085.sbs/PoSt/1122_667534.HtM
BbS.okapop086.sbs/PoSt/1122_825287.HtM
BbS.okapop087.sbs/PoSt/1122_741960.HtM
BbS.okapop088.sbs/PoSt/1122_154551.HtM
BbS.okapop090.sbs/PoSt/1122_198840.HtM
BbS.okapop091.sbs/PoSt/1122_060321.HtM
BbS.okapop092.sbs/PoSt/1122_495413.HtM
BbS.okapop082.sbs/PoSt/1122_611285.HtM
BbS.okapop083.sbs/PoSt/1122_830506.HtM
BbS.okapop084.sbs/PoSt/1122_816410.HtM
BbS.okapop085.sbs/PoSt/1122_696843.HtM
BbS.okapop086.sbs/PoSt/1122_097208.HtM
BbS.okapop087.sbs/PoSt/1122_822994.HtM
BbS.okapop088.sbs/PoSt/1122_133917.HtM
BbS.okapop090.sbs/PoSt/1122_959414.HtM
BbS.okapop091.sbs/PoSt/1122_933401.HtM
BbS.okapop092.sbs/PoSt/1122_087555.HtM
BbS.okapop082.sbs/PoSt/1122_978592.HtM
BbS.okapop083.sbs/PoSt/1122_720175.HtM
BbS.okapop084.sbs/PoSt/1122_626861.HtM
BbS.okapop085.sbs/PoSt/1122_932309.HtM
BbS.okapop086.sbs/PoSt/1122_421198.HtM
BbS.okapop087.sbs/PoSt/1122_868397.HtM
BbS.okapop088.sbs/PoSt/1122_458081.HtM
BbS.okapop090.sbs/PoSt/1122_637385.HtM
BbS.okapop091.sbs/PoSt/1122_332022.HtM
BbS.okapop092.sbs/PoSt/1122_868626.HtM
BbS.okapop082.sbs/PoSt/1122_238359.HtM
BbS.okapop083.sbs/PoSt/1122_130994.HtM
BbS.okapop084.sbs/PoSt/1122_909058.HtM
BbS.okapop085.sbs/PoSt/1122_388095.HtM
BbS.okapop086.sbs/PoSt/1122_075156.HtM
BbS.okapop087.sbs/PoSt/1122_127967.HtM
BbS.okapop088.sbs/PoSt/1122_409353.HtM
BbS.okapop090.sbs/PoSt/1122_023252.HtM
BbS.okapop091.sbs/PoSt/1122_649263.HtM
BbS.okapop092.sbs/PoSt/1122_656854.HtM
BbS.okapop082.sbs/PoSt/1122_071637.HtM
BbS.okapop083.sbs/PoSt/1122_562764.HtM
BbS.okapop084.sbs/PoSt/1122_004030.HtM
BbS.okapop085.sbs/PoSt/1122_711977.HtM
BbS.okapop086.sbs/PoSt/1122_560560.HtM
BbS.okapop087.sbs/PoSt/1122_715556.HtM
BbS.okapop088.sbs/PoSt/1122_761461.HtM
BbS.okapop090.sbs/PoSt/1122_507554.HtM
BbS.okapop091.sbs/PoSt/1122_599386.HtM
BbS.okapop092.sbs/PoSt/1122_031109.HtM



查看11道真题和解析