【全网最全】SpringBoot常见的52个注解的说明及代码示例

本文详细介绍了SpringBoot中常用的核心注解,包括@SpringBootApplication、@Configuration、@Bean、@Component、@Service、@Repository、@Controller等,以及它们在不同层次的应用,如配置、组件定义、URL映射、数据绑定等,涵盖了从应用启动到业务逻辑处理的各个方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. @SpringBootApplication

Spring Boot应用程序的入口注解,用于启动和配置Spring Boot应用。

// MyApplication.java
@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}
2. @Configuration

用于定义配置类,可以用在类上。

// MyConfiguration.java
@Configuration
public class MyConfiguration {
    // ...
}
3. @Bean

用于定义Spring容器管理的Bean,可以用在方法上。

// MyConfiguration.java
@Configuration
public class MyConfiguration {
    @Bean
    public MyBean myBean() {
        return new MyBean();
    }
}
4. @Component

用于定义组件类,可以用在类上。

// MyComponent.java
@Component
public class MyComponent {
    // ...
}
5. @Service

用于定义服务层组件类,可以用在类上。

@Service
public class MyService {
    // ...
}
6. @Repository

用于定义数据访问层组件类,可以用在类上。

// MyRepository.java
@Repository
public class MyRepository {
    // ...
}
7. @Controller

用于定义控制层组件类,可以用在类上。

@Controller
public class MyController {
    // ...
}
8. @RestController

用于定义RESTful风格的控制层组件类,可以用在类上。

// MyRestController.java
@RestController
public class MyRestController {
    // ...
}
9. @RequestMapping

用于定义URL映射规则,可以用在类和方法上。

@RestController
@RequestMapping("/api")
public class MyController {
    @GetMapping("/users")
    public List<User> getUsers() {
        // ...
    }
}
10. @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping

用于定义HTTP方法对应的URL映射规则,可以用在方法上。

@RestController
public class MyController {
    @GetMapping("/users")
    public List<User> getUsers() {
        // ...
    }

    @PostMapping("/users")
    public User createUser(@RequestBody User user) {
        // ...
    }
}
11. @PathVariable

用于绑定URL路径中的变量到方法参数,可以用在方法参数上。

@RestController
public class MyController {
    @GetMapping("/users/{id}")
    public User getUser(@PathVariable("id") Long id) {
        // ...
    }
}
12. @RequestParam

用于绑定HTTP请求参数到方法参数,可以用在方法参数上。

@RestController
public class MyController {
    @GetMapping("/users")
    public List<User> getUsers(@RequestParam(value = "name", required = false) String name) {
        // ...
    }
}
13. @RequestHeader

用于绑定HTTP请求头到方法参数,可以用在方法参数上。

@RestController
public class MyController {
    @GetMapping("/users")
    public List<User> getUsers(@RequestHeader("Accept-Language") String acceptLanguage) {
        // ...
    }
}
14. @RequestBody

用于绑定HTTP请求体到方法参数,可以用在方法参数上。

@RestController
public class MyController {
    @PostMapping("/users")
    public User createUser(@RequestBody User user) {
        // ...
    }
}
15. @ResponseBody

用于将方法返回值作为HTTP响应体,可以用在方法上。

@Controller
public class MyController {
    @GetMapping("/users")
    @ResponseBody
    public List<User> getUsers() {
        // ...
    }
}
16. @Autowired

用于自动装配Bean,可以用在属性、构造函数和Setter方法上。

@Service
public class MyService {
    @Autowired
    private UserRepository userRepository;
}
17. @Resource

用于注入指定名称的Bean,可以用在属性、构造函数和Setter方法上。

@Service
public class MyService {
    @Resource(name = "userRepository")
    private UserRepository userRepository;
}
18. @Value

用于注入属性值,可以用在属性和方法参数上。

@Service
public class MyService {
    @Value("${my.property}")
    private String myProperty;
}
19. @Qualifier

用于限定自动装配的Bean,可以用在属性、构造函数和Setter方法上。

@Service
public class MyService {
    @Autowired
    @Qualifier("specificUserRepository")
    private UserRepository userRepository;
}
20. @Scope

用于定义Bean的作用域,可以用在@Component、@Service、@Repository等注解以及@Bean方法上。

// MyComponent.java
@Component
@Scope("prototype")
public class MyComponent {
    // ...
}
21. @ComponentScan

用于定义组件扫描的基础包,可以用在@Configuration类上。

// MyConfiguration.java
@Configuration
@ComponentScan("com.example.myapp")
public class MyConfiguration {
    // ...
}
22. @Import

用于导入其他配置类,可以用在@Configuration类上。

// MyConfiguration.java
@Configuration
@Import(AnotherConfiguration.class)
public class MyConfiguration {
    // ...
}
23. @ImportResource

用于导入XML配置文件,可以用在@Configuration类上。

// MyConfiguration.java
@Configuration
@ImportResource("classpath:application-context.xml")
public class MyConfiguration {
    // ...
}
24. @Profile

用于定义配置类或Bean仅在特定的Profile激活时才会生效,可以用在@Configuration类或@Bean方法上。

// MyConfiguration.java
@Configuration
@Profile("production")
public class ProductionConfig {
    // ...
}
25. @Order

用于定义Bean初始化顺序,可以用在@Configuration、@Component、@Service、@Repository等注解以及@Bean方法上。

// MyConfiguration.java
@Configuration
@Order(1)
public class MyConfiguration {
    // ...
}
26. @Lazy

用于延迟初始化Bean,可以用在@Component、@Service、@Repository等注解以及@Bean方法上。

// MyComponent.java
@Component
@Lazy
public class MyComponent {
    // ...
}
27. @EnableCaching

用于启用缓存功能,可以用在@Configuration类上。

// MyConfiguration.java
@Configuration
@EnableCaching
public class MyConfiguration {
    // ...
}
28. @Cacheable

用于将方法返回值缓存起来,可以用在方法上。

@Service
public class MyService {
    @Cacheable("users")
    public User getUser(Long id) {
        // ...
    }
}
29. @CacheEvict

用于清除缓存,可以用在方法上。

@Service
public class MyService {
    @CacheEvict(value = "users", allEntries = true)
    public void deleteUser(Long id) {
        // ...
    }
}
30. @CachePut

用于将方法返回值放入缓存,并且总是执行方法,可以用在方法上。

@Service
public class MyService {
    @CachePut(value = "users", key = "#user.id")
    public User updateUser(User user) {
        // ...
    }
}
31. @EnableScheduling

用于启用定时任务功能,可以用在@Configuration类上。

// MyConfiguration.java
@Configuration
@EnableScheduling
public class MyConfiguration {
    // ...
}
32. @Scheduled

用于定义定时任务方法,可以用在方法上。

// MyTask.java
@Component
public class MyTask {
    @Scheduled(cron = "0 0 * * * ?")
    public void execute() {
        // ...
    }
}
33. @EnableAsync

用于启用异步方法执行功能,可以用在@Configuration类上。

// MyConfiguration.java
@Configuration
@EnableAsync
public class MyConfiguration {
    // ...
}
34. @Async

用于定义异步执行的方法,可以用在方法上。

@Service
public class MyService {
    @Async
    public CompletableFuture<String> asyncMethod() {
        // ...
    }
}
35. @EnableAutoConfiguration

用于启用自动配置功能,可以用在@Configuration类上。

// MyConfiguration.java
@Configuration
@EnableAutoConfiguration
public class MyConfiguration {
    // ...
}
36. @Conditional

用于定义条件配置,可以用在@Configuration类或@Bean方法上。

// MyConfiguration.java
@Configuration
public class MyConfiguration {
    @Bean
    @Conditional(MyCondition.class)
    public MyBean myBean() {
        // ...
    }
}
37. @ConditionalOnClass, @ConditionalOnMissingClass

用于定义在特定类存在或不存在时的条件配置,可以用在@Configuration类或@Bean方法上。

// MyConfiguration.java
@Configuration
public class MyConfiguration {
    @Bean
    @ConditionalOnClass(name = "com.example.MyClass")
    public MyBean myBean() {
        // ...
    }
}
38. @ConditionalOnBean, @ConditionalOnMissingBean

用于定义在特定Bean存在或不存在时的条件配置,可以用在@Configuration类或@Bean方法上。

// MyConfiguration.java
@Configuration
public class MyConfiguration {
    @Bean
    @ConditionalOnBean(name = "myOtherBean")
    public MyBean myBean() {
        // ...
    }
}
39. @ConditionalOnProperty

用于定义在特定属性存在或满足条件时的条件配置,可以用在@Configuration类或@Bean方法上。

// MyConfiguration.java
@Configuration
public class MyConfiguration {
    @Bean
    @ConditionalOnProperty(name = "my.feature.enabled", havingValue = "true")
    public MyBean myBean() {
        // ...
    }
}
40. @ConditionalOnResource

用于定义在特定资源存在时的条件配置,可以用在@Configuration类或@Bean方法上。

// MyConfiguration.java
@Configuration
public class MyConfiguration {
    @Bean
    @ConditionalOnResource(resources = "classpath:my-resource.properties")
    public MyBean myBean() {
        // ...
    }
}
40. @ConditionalOnResource

用于定义在特定资源存在时的条件配置,可以用在@Configuration类或@Bean方法上。

// MyConfiguration.java
@Configuration
public class MyConfiguration {
    @Bean
    @ConditionalOnResource(resources = "classpath:my-resource.properties")
    public MyBean myBean() {
        // ...
    }
}
41. @ConditionalOnExpression

用于定义在特定SpEL表达式计算为true时的条件配置,可以用在@Configuration类或@Bean方法上。

// MyConfiguration.java
@Configuration
public class MyConfiguration {
    @Bean
    @ConditionalOnExpression("#{systemProperties['my.property'] == 'myValue'}")
    public MyBean myBean() {
        // ...
    }
}
42. @ExceptionHandler

用于处理控制器中的异常,可以用在方法上。

@RestController
public class MyController {
    // ...

    @ExceptionHandler(MyException.class)
    public ResponseEntity<String> handleMyException(MyException ex) {
        // ...
    }
}
43. @ResponseStatus

用于设置HTTP响应状态码,可以用在@ExceptionHandler方法或控制器方法上。

@RestController
public class MyController {
    // ...

    @GetMapping("/error")
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public void error() {
        // ...
    }
}
44. @ModelAttribute

用于在控制器方法执行之前设置模型属性,可以用在方法上。

@Controller
public class MyController {
    @ModelAttribute("user")
    public User getUser() {
        // ...
    }

    @GetMapping("/hello")
    public String hello(Model model) {
        // ...
    }
}
45. @SessionAttributes

用于将模型属性存储在会话中,可以用在@Controller类上。

@Controller
@SessionAttributes("user")
public class MyController {
    // ...
}
46. @EnableAspectJAutoProxy

用于启用AOP代理,可以用在@Configuration类上。

// MyConfiguration.java
@Configuration
@EnableAspectJAutoProxy
public class MyConfiguration {
    // ...
}
47. @Aspect

用于定义切面,可以用在类上。

// MyAspect.java
@Aspect
@Component
public class MyAspect {
    // ...
}
48. @Before, @After, @Around, @AfterReturning, @AfterThrowing

用于定义切点通知,可以用在方法上。

// MyAspect.java
@Aspect
@Component
public class MyAspect {
    @Before("execution(* com.example.myapp.service.*.*(..))")
    public void before(JoinPoint joinPoint) {
        // ...
    }
}
49. @EnableTransactionManagement

用于启用声明式事务管理,可以用在@Configuration类上。

// MyConfiguration.java
@Configuration
@EnableTransactionManagement
public class MyConfiguration {
    // ...
}
50. @Transactional

用于声明方法需要事务支持,可以用在方法或类上。

@Service
public class MyService {
    @Transactional
    public void updateData() {
        // ...
    }
}
51. @EnableJpaRepositories

用于启用JPA存储库支持,可以用在@Configuration类上。

// MyConfiguration.java
@Configuration
@EnableJpaRepositories(basePackages = "com.example.myapp.repository")
public class MyConfiguration {
    // ...
}
52. @Entity, @Table

用于定义实体类和数据库表映射,可以用在类上。

// User.java
@Entity
@Table(name = "users")
public class User {
    // ...
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值