0


Spring Boot开发宝典!超实用50个注解一网打尽

心血制作,太干货,建议收藏!

一、Spring Boot核心注解

  1. @SpringBootApplication这是Spring Boot项目的核心注解,包含了@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan。@SpringBootApplicationpublicclassApplication{publicstaticvoidmain(String[] args){SpringApplication.run(Application.class, args);}}

二、配置与自动配置

  1. @Configuration声明当前类是一个配置类。@ConfigurationpublicclassAppConfig{// Bean definitions here}
  2. @EnableAutoConfiguration启用自动配置。// 通常包含在@SpringBootApplication中
  3. @ComponentScan自动扫描并加载组件。@ComponentScan(basePackages ="com.example")publicclassAppConfig{}

三、定义Bean

  1. @Component泛指组件。@ComponentpublicclassMyComponent{}
  2. @Service业务层组件。@ServicepublicclassMyService{}
  3. @Repository数据访问组件。@RepositorypublicclassMyRepository{}
  4. @Controller控制层组件。@ControllerpublicclassMyController{}
  5. @RestController控制层组件,返回数据直接写入HTTP响应体。@RestControllerpublicclassMyRestController{// ...}

四、依赖注入

  1. @Autowired自动注入依赖的bean。@ServicepublicclassMyService{@AutowiredprivateMyRepository repository;}

五、配置属性

  1. @Value注入SpEL表达式结果。@ComponentpublicclassMyComponent{@Value("${app.name}")privateString appName;}
  2. @ConfigurationProperties绑定外部配置到Java对象。@Component@ConfigurationProperties(prefix ="app.database")publicclassDatabaseProperties{// ...}

六、测试相关

  1. @SpringBootTest用于Spring Boot集成测试。@RunWith(SpringRunner.class)@SpringBootTestpublicclassMyIntegrationTest{// ...}
  2. @MockBean在测试环境中替换bean为Mock对象。@SpringBootTestpublicclassMyServiceTest{@MockBeanprivateMyRepository repository;// ...}

七、RESTful Web服务

  1. **@GetMapping, @PostMapping, etc.**定义HTTP方法映射。@RestControllerpublicclassUserController{@GetMapping("/users/{id}")publicUsergetUser(@PathVariableLong id){// ...}}
  2. @PathVariable从URL路径中提取变量值。// 如上例所示
  3. @RequestBody绑定请求体到方法参数。// 如上RESTful Web服务示例所示

八、数据验证与绑定

  1. @Valid开启方法级别验证。publicResponseEntity<?>createUser(@Valid@RequestBodyUser user){// ...}
  2. @NotNull, @Size, @Pattern 等字段验证注解。publicclassUser{@NotNullprivateLong id;// ... other validations}

九、AOP相关

  1. @Aspect声明一个切面。@Aspect@ComponentpublicclassLoggingAspect{// ...}
  2. **@Before, @After, etc.**定义通知类型。// 如AOP相关示例所示

十、缓存相关

  1. @EnableCaching启用缓存支持。@Configuration@EnableCachingpublicclassCachingConfig{// ...}
  2. @Cacheable标记方法结果可缓存。@Cacheable("users")publicUsergetUserById(Long id){// ...}

十一、事务管理

  1. @Transactional声明式事务管理。@ServicepublicclassUserService{@TransactionalpublicvoidcreateUser(User user){// ...}}

十二、任务调度

  1. @EnableScheduling启用任务调度支持。@Configuration@EnableSchedulingpublicclassSchedulingConfig{// ...}
  2. @Scheduled定义定时任务。@Scheduled(fixedRate =5000)publicvoiddoSomething(){// ...}

十三、消息队列

  1. @RabbitListenerRabbitMQ消息监听器。@RabbitListener(queues ="myQueue")publicvoidreceiveMessage(String message){// ...}

十四、缓存(注意:与“缓存相关”重复,这里提供其他缓存注解)

  1. @CachePut更新缓存中的数据。@CachePut(value ="users", key ="#user.id")publicUserupdateUser(User user){// ...}
  2. @CacheEvict清除缓存条目(已在“缓存相关”中给出示例)。

十五、日志记录

  1. @Slf4j (Lombok提供)自动生成SLF4J的Logger实例。@Slf4jpublicclassMyService{publicvoiddoSomething(){ log.info("Doing something...");}}

十六、异步执行

  1. @EnableAsync启用异步方法执行支持。@Configuration@EnableAsyncpublicclassAsyncConfig{// ...}
  2. @Async标记方法为异步执行。@AsyncpublicvoidasyncMethod(){// ...}

十七、异常处理

  1. @ControllerAdvice全局异常处理。@ControllerAdvicepublicclassGlobalExceptionHandler{// ...}
  2. @ExceptionHandler处理特定异常。@ExceptionHandler(Exception.class)publicResponseEntity<Object>handleException(Exception e){// ...}

十八、事件监听

  1. @EventListener监听并处理应用程序事件。@EventListenerpublicvoidhandleApplicationEvent(ApplicationEvent event){// ...}

十九、安全性

  1. @EnableWebSecurity启用Spring Security的Web安全性。@EnableWebSecuritypublicclassWebSecurityConfigextendsWebSecurityConfigurerAdapter{// ...}
  2. @PreAuthorize, @Secured 等方法级别的安全性注解。@PreAuthorize("hasRole('ROLE_USER')")publicvoidsecureMethod(){// ...}

二十、条件化配置

  1. @ConditionalOnClass

用法说明:当类路径中存在指定的类时,才注册bean。

@Configuration@ConditionalOnClass(DataSource.class)publicclassDataSourceConfig{// ...}
  1. @ConditionalOnMissingBean

用法说明:当Spring容器中不存在指定类型的bean时,才注册bean。

@Bean@ConditionalOnMissingBeanpublicMyBeanmyBean(){returnnewMyBean();}
  1. @ConditionalOnProperty

用法说明:根据配置文件中的属性值来条件化地注册bean。

@Configuration@ConditionalOnProperty(name ="feature.enabled", havingValue ="true")publicclassFeatureConfig{// ...}

二十一、Spring Data JPA相关

  1. @Entity

用法说明:标记一个类为实体类,映射到数据库中的一个表。

@EntitypublicclassUser{// ...}
  1. @Id

用法说明:标注用于标识实体的属性,通常映射到数据库表的主键列。

@EntitypublicclassUser{@IdprivateLong id;// ...}
  1. @RepositoryRestResource

用法说明:与Spring Data REST一起使用,为JPA仓库暴露RESTful API。

@RepositoryRestResource(collectionResourceRel ="users", path ="users")publicinterfaceUserRepositoryextendsJpaRepository<User,Long>{// ...}

二十二、Web相关扩展

  1. @ControllerAdvice (已在异常处理中给出示例)

用法说明(扩展):除了异常处理,还可以用于全局数据绑定、请求预处理等。

  1. @InitBinder

用法说明:在Web控制器中自定义数据绑定方法。

@InitBinderpublicvoidinitBinder(WebDataBinder binder){// 自定义数据绑定逻辑}

二十三、Spring MVC相关

  1. @ModelAttribute

用法说明:绑定请求参数到模型属性,或者暴露一个方法参数为模型属性。

@ModelAttributepublicvoidpopulateModel(@RequestParamString attributeName,Model model){
 model.addAttribute(attributeName,"attributeValue");}
  1. @SessionAttributes

用法说明:将模型属性存储到HTTP session中。

@Controller@SessionAttributes("attributeName")publicclassMyController{// ...}

二十四、性能监控与指标

  1. @EnableWebMvcMetrics (Spring Boot Actuator提供)

用法说明:启用Web MVC的度量收集,如HTTP请求计数器、响应时间等。

// 通常通过添加spring-boot-starter-actuator依赖并配置相关属性来启用

二十五、国际化与本地化

  1. @MessageSource

用法说明:与Spring的国际化支持一起使用,定义消息源。

@ConfigurationpublicclassMessageSourceConfig{@BeanpublicMessageSourcemessageSource(){ResourceBundleMessageSource messageSource =newResourceBundleMessageSource();
     messageSource.setBasename("messages");// 假设资源文件名为messages.propertiesreturn messageSource;}}

这些注解覆盖了Spring Boot开发的多个方面,从核心功能到Web服务、数据访问、安全性、国际化等。正确使用这些注解可以大大提高开发效率和代码质量。

如果你渴望深入了解这50个注解的完整内容,想要获取更全面的知识和指导,那么请立即行动!关注我们,了解更多java和web前端学习干货。


本文转载自: https://blog.csdn.net/liyunhua258/article/details/139575549
版权归原作者 编程诗人华仔 所有, 如有侵权,请联系我们删除。

“Spring Boot开发宝典!超实用50个注解一网打尽”的评论:

还没有评论