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

一、Spring Boot核心注解

  1. @SpringBootApplication

    这是Spring Boot项目的核心注解,包含了@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan。

    @SpringBootApplication
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
    

二、配置与自动配置

  1. @Configuration

    声明当前类是一个配置类。

    @Configuration
    public class AppConfig {
        // Bean definitions here
    }
    
  2. @EnableAutoConfiguration

    启用自动配置。

    // 通常包含在@SpringBootApplication中
    
  3. @ComponentScan

    自动扫描并加载组件。

    @ComponentScan(basePackages = "com.example")
    public class AppConfig {
    }
    

三、定义Bean

  1. @Component

    泛指组件。

    @Component
    public class MyComponent {
    }
    
  2. @Service

    业务层组件。

    @Service
    public class MyService {
    }
    
  3. @Repository

    数据访问组件。

    @Repository
    public class MyRepository {
    }
    
  4. @Controller

    控制层组件。

    @Controller
    public class MyController {
    }
    
  5. @RestController

    控制层组件,返回数据直接写入HTTP响应体。

    @RestController
    public class MyRestController {
        // ...
    }
    

四、依赖注入

  1. @Autowired

    自动注入依赖的bean。

    @Service
    public class MyService {
        @Autowired
        private MyRepository repository;
    }
    

五、配置属性

  1. @Value

    注入SpEL表达式结果。

    @Component
    public class MyComponent {
        @Value("${app.name}")
        private String appName;
    }
    
  2. @ConfigurationProperties

    绑定外部配置到Java对象。

    @Component
    @ConfigurationProperties(prefix = "app.database")
    public class DatabaseProperties {
        // ...
    }
    

六、测试相关

  1. @SpringBootTest

    用于Spring Boot集成测试。

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class MyIntegrationTest {
        // ...
    }
    
  2. @MockBean

    在测试环境中替换bean为Mock对象。

    @SpringBootTest
    public class MyServiceTest {
        @MockBean
        private MyRepository repository;
        // ...
    }
    

七、RESTful Web服务

  1. @GetMapping, @PostMapping, etc.

    定义HTTP方法映射。

    @RestController
    public class UserController {
        @GetMapping("/users/{id}")
        public User getUser(@PathVariable Long id) {
            // ...
        }
    }
    
  2. @PathVariable

    从URL路径中提取变量值。

    // 如上例所示
    
  3. @RequestBody

    绑定请求体到方法参数。

    // 如上RESTful Web服务示例所示
    

八、数据验证与绑定

  1. @Valid

    开启方法级别验证。

    public ResponseEntity<?> createUser(@Valid @RequestBody User user) {
        // ...
    }
    
  2. @NotNull, @Size, @Pattern

    字段验证注解。

    public class User {
        @NotNull private Long id;
        // ... other validations
    }
    

九、AOP相关

  1. @Aspect

    声明一个切面。

    @Aspect
    @Component
    public class LoggingAspect {
        // ...
    }
    
  2. @Before, @After, etc.

    定义通知类型。

    // 如AOP相关示例所示
    

十、缓存相关

  1. @EnableCaching

    启用缓存支持。

    @Configuration
    @EnableCaching
    public class CachingConfig {
        // ...
    }
    
  2. @Cacheable

    标记方法结果可缓存。

    @Cacheable("users")
    public User getUserById(Long id) {
        // ...
    }
    

十一、事务管理

  1. @Transactional

    声明式事务管理。

    @Service
    public class UserService {
        @Transactional
        public void createUser(User user) {
            // ...
        }
    }
    

十二、任务调度

  1. @EnableScheduling

    启用任务调度支持。

    @Configuration
    @EnableScheduling
    public class SchedulingConfig {
        // ...
    }
    
  2. @Scheduled

    定义定时任务。

    @Scheduled(fixedRate = 5000)
    public void doSomething() {
        // ...
    }
    

十三、消息队列

  1. @RabbitListener

    RabbitMQ消息监听器。

    @RabbitListener(queues = "myQueue")
    public void receiveMessage(String message) {
        // ...
    }
    

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

  1. @CachePut

    更新缓存中的数据。

    @CachePut(value = "users", key = "#user.id")
    public User updateUser(User user) {
        // ...
    }
    
  2. @CacheEvict

    清除缓存条目(已在“缓存相关”中给出示例)。

十五、日志记录

  1. @Slf4j (Lombok提供)

    自动生成SLF4J的Logger实例。

    @Slf4j
    public class MyService {
        public void doSomething() {
            log.info("Doing something...");
        }
    }
    

十六、异步执行

  1. @EnableAsync

    启用异步方法执行支持。

    @Configuration
    @EnableAsync
    public class AsyncConfig {
        // ...
    }
    
  2. @Async

    标记方法为异步执行。

    @Async
    public void asyncMethod() {
        // ...
    }
    

十七、异常处理

  1. @ControllerAdvice

    全局异常处理。

    @ControllerAdvice
    public class GlobalExceptionHandler {
        // ...
    }
    
  2. @ExceptionHandler

    处理特定异常。

    @ExceptionHandler(Exception.class)
    public ResponseEntity<Object> handleException(Exception e) {
        // ...
    }
    

十八、事件监听

  1. @EventListener

    监听并处理应用程序事件。

    @EventListener
    public void handleApplicationEvent(ApplicationEvent event) {
        // ...
    }
    

十九、安全性

  1. @EnableWebSecurity

    启用Spring Security的Web安全性。

    @EnableWebSecurity
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
        // ...
    }
    
  2. @PreAuthorize, @Secured

    方法级别的安全性注解。

    @PreAuthorize("hasRole('ROLE_USER')")
    public void secureMethod() {
        // ...
    }
    

二十、条件化配置

  1. @ConditionalOnClass

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

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

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

@Bean
@ConditionalOnMissingBean
public MyBean myBean() {
 return new MyBean();
}
  1. @ConditionalOnProperty

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

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

二十一、Spring Data JPA相关

  1. @Entity

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

@Entity
public class User {
 // ...
}
  1. @Id

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

@Entity
public class User {
 @Id
 private Long id;
 // ...
}
  1. @RepositoryRestResource

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

@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UserRepository extends JpaRepository<User, Long> {
 // ...
}

二十二、Web相关扩展

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

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

  1. @InitBinder

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

@InitBinder
public void initBinder(WebDataBinder binder) {
 // 自定义数据绑定逻辑
}

二十三、Spring MVC相关

  1. @ModelAttribute

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

@ModelAttribute
public void populateModel(@RequestParam String attributeName, Model model) {
 model.addAttribute(attributeName, "attributeValue");
}
  1. @SessionAttributes

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

@Controller
@SessionAttributes("attributeName")
public class MyController {
 // ...
}

二十四、性能监控与指标

  1. @EnableWebMvcMetrics (Spring Boot Actuator提供)

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

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

二十五、国际化与本地化

  1. @MessageSource

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

@Configuration
public class MessageSourceConfig {
 @Bean
 public MessageSource messageSource() {
     ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
     messageSource.setBasename("messages"); // 假设资源文件名为messages.properties
     return messageSource;
 }
}

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

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

06-14 23:58