心血制作,太干货,建议收藏!
一、Spring Boot核心注解
- @SpringBootApplication这是Spring Boot项目的核心注解,包含了@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan。
@SpringBootApplicationpublicclassApplication{publicstaticvoidmain(String[] args){SpringApplication.run(Application.class, args);}}
二、配置与自动配置
- @Configuration声明当前类是一个配置类。
@ConfigurationpublicclassAppConfig{// Bean definitions here}
- @EnableAutoConfiguration启用自动配置。
// 通常包含在@SpringBootApplication中
- @ComponentScan自动扫描并加载组件。
@ComponentScan(basePackages ="com.example")publicclassAppConfig{}
三、定义Bean
- @Component泛指组件。
@ComponentpublicclassMyComponent{}
- @Service业务层组件。
@ServicepublicclassMyService{}
- @Repository数据访问组件。
@RepositorypublicclassMyRepository{}
- @Controller控制层组件。
@ControllerpublicclassMyController{}
- @RestController控制层组件,返回数据直接写入HTTP响应体。
@RestControllerpublicclassMyRestController{// ...}
四、依赖注入
- @Autowired自动注入依赖的bean。
@ServicepublicclassMyService{@AutowiredprivateMyRepository repository;}
五、配置属性
- @Value注入SpEL表达式结果。
@ComponentpublicclassMyComponent{@Value("${app.name}")privateString appName;}
- @ConfigurationProperties绑定外部配置到Java对象。
@Component@ConfigurationProperties(prefix ="app.database")publicclassDatabaseProperties{// ...}
六、测试相关
- @SpringBootTest用于Spring Boot集成测试。
@RunWith(SpringRunner.class)@SpringBootTestpublicclassMyIntegrationTest{// ...}
- @MockBean在测试环境中替换bean为Mock对象。
@SpringBootTestpublicclassMyServiceTest{@MockBeanprivateMyRepository repository;// ...}
七、RESTful Web服务
- **@GetMapping, @PostMapping, etc.**定义HTTP方法映射。
@RestControllerpublicclassUserController{@GetMapping("/users/{id}")publicUsergetUser(@PathVariableLong id){// ...}}
- @PathVariable从URL路径中提取变量值。
// 如上例所示
- @RequestBody绑定请求体到方法参数。
// 如上RESTful Web服务示例所示
八、数据验证与绑定
- @Valid开启方法级别验证。
publicResponseEntity<?>createUser(@Valid@RequestBodyUser user){// ...}
- @NotNull, @Size, @Pattern 等字段验证注解。
publicclassUser{@NotNullprivateLong id;// ... other validations}
九、AOP相关
- @Aspect声明一个切面。
@Aspect@ComponentpublicclassLoggingAspect{// ...}
- **@Before, @After, etc.**定义通知类型。
// 如AOP相关示例所示
十、缓存相关
- @EnableCaching启用缓存支持。
@Configuration@EnableCachingpublicclassCachingConfig{// ...}
- @Cacheable标记方法结果可缓存。
@Cacheable("users")publicUsergetUserById(Long id){// ...}
十一、事务管理
- @Transactional声明式事务管理。
@ServicepublicclassUserService{@TransactionalpublicvoidcreateUser(User user){// ...}}
十二、任务调度
- @EnableScheduling启用任务调度支持。
@Configuration@EnableSchedulingpublicclassSchedulingConfig{// ...}
- @Scheduled定义定时任务。
@Scheduled(fixedRate =5000)publicvoiddoSomething(){// ...}
十三、消息队列
- @RabbitListenerRabbitMQ消息监听器。
@RabbitListener(queues ="myQueue")publicvoidreceiveMessage(String message){// ...}
十四、缓存(注意:与“缓存相关”重复,这里提供其他缓存注解)
- @CachePut更新缓存中的数据。
@CachePut(value ="users", key ="#user.id")publicUserupdateUser(User user){// ...}
- @CacheEvict清除缓存条目(已在“缓存相关”中给出示例)。
十五、日志记录
- @Slf4j (Lombok提供)自动生成SLF4J的Logger实例。
@Slf4jpublicclassMyService{publicvoiddoSomething(){ log.info("Doing something...");}}
十六、异步执行
- @EnableAsync启用异步方法执行支持。
@Configuration@EnableAsyncpublicclassAsyncConfig{// ...}
- @Async标记方法为异步执行。
@AsyncpublicvoidasyncMethod(){// ...}
十七、异常处理
- @ControllerAdvice全局异常处理。
@ControllerAdvicepublicclassGlobalExceptionHandler{// ...}
- @ExceptionHandler处理特定异常。
@ExceptionHandler(Exception.class)publicResponseEntity<Object>handleException(Exception e){// ...}
十八、事件监听
- @EventListener监听并处理应用程序事件。
@EventListenerpublicvoidhandleApplicationEvent(ApplicationEvent event){// ...}
十九、安全性
- @EnableWebSecurity启用Spring Security的Web安全性。
@EnableWebSecuritypublicclassWebSecurityConfigextendsWebSecurityConfigurerAdapter{// ...}
- @PreAuthorize, @Secured 等方法级别的安全性注解。
@PreAuthorize("hasRole('ROLE_USER')")publicvoidsecureMethod(){// ...}
二十、条件化配置
- @ConditionalOnClass
用法说明:当类路径中存在指定的类时,才注册bean。
@Configuration@ConditionalOnClass(DataSource.class)publicclassDataSourceConfig{// ...}
- @ConditionalOnMissingBean
用法说明:当Spring容器中不存在指定类型的bean时,才注册bean。
@Bean@ConditionalOnMissingBeanpublicMyBeanmyBean(){returnnewMyBean();}
- @ConditionalOnProperty
用法说明:根据配置文件中的属性值来条件化地注册bean。
@Configuration@ConditionalOnProperty(name ="feature.enabled", havingValue ="true")publicclassFeatureConfig{// ...}
二十一、Spring Data JPA相关
- @Entity
用法说明:标记一个类为实体类,映射到数据库中的一个表。
@EntitypublicclassUser{// ...}
- @Id
用法说明:标注用于标识实体的属性,通常映射到数据库表的主键列。
@EntitypublicclassUser{@IdprivateLong id;// ...}
- @RepositoryRestResource
用法说明:与Spring Data REST一起使用,为JPA仓库暴露RESTful API。
@RepositoryRestResource(collectionResourceRel ="users", path ="users")publicinterfaceUserRepositoryextendsJpaRepository<User,Long>{// ...}
二十二、Web相关扩展
- @ControllerAdvice (已在异常处理中给出示例)
用法说明(扩展):除了异常处理,还可以用于全局数据绑定、请求预处理等。
- @InitBinder
用法说明:在Web控制器中自定义数据绑定方法。
@InitBinderpublicvoidinitBinder(WebDataBinder binder){// 自定义数据绑定逻辑}
二十三、Spring MVC相关
- @ModelAttribute
用法说明:绑定请求参数到模型属性,或者暴露一个方法参数为模型属性。
@ModelAttributepublicvoidpopulateModel(@RequestParamString attributeName,Model model){
model.addAttribute(attributeName,"attributeValue");}
- @SessionAttributes
用法说明:将模型属性存储到HTTP session中。
@Controller@SessionAttributes("attributeName")publicclassMyController{// ...}
二十四、性能监控与指标
- @EnableWebMvcMetrics (Spring Boot Actuator提供)
用法说明:启用Web MVC的度量收集,如HTTP请求计数器、响应时间等。
// 通常通过添加spring-boot-starter-actuator依赖并配置相关属性来启用
二十五、国际化与本地化
- @MessageSource
用法说明:与Spring的国际化支持一起使用,定义消息源。
@ConfigurationpublicclassMessageSourceConfig{@BeanpublicMessageSourcemessageSource(){ResourceBundleMessageSource messageSource =newResourceBundleMessageSource();
messageSource.setBasename("messages");// 假设资源文件名为messages.propertiesreturn messageSource;}}
这些注解覆盖了Spring Boot开发的多个方面,从核心功能到Web服务、数据访问、安全性、国际化等。正确使用这些注解可以大大提高开发效率和代码质量。
如果你渴望深入了解这50个注解的完整内容,想要获取更全面的知识和指导,那么请立即行动!关注我们,了解更多java和web前端学习干货。
版权归原作者 编程诗人华仔 所有, 如有侵权,请联系我们删除。