在 Spring Boot 开发中,有许多常用的注解,它们各自扮演不同的角色来简化和增强开发过程。以下是一些常见的 Spring Boot 注解及其解释:

1. @SpringBootApplication
  • 说明:这是 Spring Boot 应用的入口注解,通常用于主应用类上。它是一个复合注解,实际上组合了以下三个注解:
  • @Configuration:标记该类为 Spring 配置类。
  • @EnableAutoConfiguration:启用 Spring Boot 的自动配置功能。
  • @ComponentScan:自动扫描组件(如 @Component@Service@Repository 等)并注册到 Spring 上下文中。
  • 示例
@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
2. @RestController
  • 说明:用于标记一个类作为 RESTful 控制器,简化了 @Controller@ResponseBody 的使用。所有标记为 @RestController 的类中的方法默认会返回 JSON 或 XML 数据。
  • 示例
@RestController
public class MyRestController {
    
    @GetMapping("/api/hello")
    public String hello() {
        return "Hello, World!";
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
3. @Controller
  • 说明:标记一个类为 Spring MVC 控制器,用于处理 HTTP 请求并返回视图名称。通常与 @RequestMapping 或其他 HTTP 方法注解一起使用。
  • 示例
@Controller
public class MyController {
    
    @GetMapping("/home")
    public String home(Model model) {
        model.addAttribute("message", "Welcome to the home page!");
        return "home";
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
4. @Service
  • 说明:标记一个类为服务层组件。通常用于定义业务逻辑层的组件。
  • 示例
@Service
public class MyService {
    
    public String process() {
        return "Processing...";
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
5. @Repository
  • 说明:标记一个类为数据访问层组件。用于定义数据访问逻辑(如数据库操作)。
  • 示例
@Repository
public class MyRepository {
    
    public void save(Object obj) {
        // Save to database
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
6. @Autowired
  • 说明:用于自动注入 Spring 上下文中的 Bean。可以用在字段、构造函数、或方法上。
  • 示例
@Service
public class MyService {
    
    @Autowired
    private MyRepository myRepository;
    
    public void performAction() {
        myRepository.save(new Object());
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
7. @Value
  • 说明:用于注入配置文件中的值(如 application.propertiesapplication.yml)。
  • 示例
@Component
public class MyComponent {
    
    @Value("${app.name}")
    private String appName;
    
    public String getAppName() {
        return appName;
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
8. @Configuration
  • 说明:用于定义 Spring 配置类,通常用于声明 Bean 定义。
  • 示例
@Configuration
public class AppConfig {
    
    @Bean
    public MyService myService() {
        return new MyService();
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
9. @Bean
  • 说明:用于定义一个 Bean 方法,这些方法会被 Spring 容器管理并作为 Bean 注册。
  • 示例
@Configuration
public class AppConfig {
    
    @Bean
    public MyService myService() {
        return new MyService();
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
10. @RequestMapping
  • 说明:用于映射 HTTP 请求到方法上,可以指定请求的 URL、方法类型等。也可以通过 @GetMapping@PostMapping@PutMapping@DeleteMapping 等注解来更精确地指定请求方法。
  • 示例
@RestController
@RequestMapping("/api")
public class MyRestController {
    
    @GetMapping("/greeting")
    public String greeting() {
        return "Hello, World!";
    }
    
    @PostMapping("/create")
    public ResponseEntity<String> create(@RequestBody MyEntity entity) {
        // Process creation
        return ResponseEntity.ok("Created");
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
11. @Transactional
  • 说明:用于定义事务边界,标记一个方法或类的方法需要事务管理。通常用于服务层方法。
  • 示例
@Service
public class MyService {
    
    @Transactional
    public void performTransactionalOperation() {
        // Business logic that requires a transaction
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
12. @EnableAutoConfiguration
  • 说明:启用 Spring Boot 的自动配置功能。这个注解通常由 @SpringBootApplication 代替,但在其他配置类中也可以单独使用。
  • 示例
@Configuration
@EnableAutoConfiguration
public class MyConfig {
    // Configuration beans
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

这些注解是 Spring Boot 开发中的基础构建块,掌握它们将帮助我们更高效地创建和管理 Spring Boot 应用程序。