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

#牛客AI配图神器#

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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