Spring Boot
中常用的注解,解释它们的作用、使用场景及示例,帮助深入理解 Spring Boot
的核心功能。
一、基本注解
1. @SpringBootApplication
- 作用:这是一个组合注解,用来标记 Spring Boot 应用的启动类。它结合了
@Configuration
、@EnableAutoConfiguration
和@ComponentScan
。 - 使用场景:通常在启动类上使用。
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
- 解释:
@Configuration
:表示当前类是一个配置类,相当于 XML 配置文件。@EnableAutoConfiguration
:启用 Spring Boot 自动配置,Spring Boot 会自动根据类路径中的库来配置应用程序。@ComponentScan
:启用组件扫描,默认扫描当前包及子包中的组件。
2. @RestController
- 作用:这是一个组合注解,表示该类是一个控制器,并且方法的返回值会直接作为 HTTP 响应体返回。相当于
@Controller
和@ResponseBody
的组合。 - 使用场景:通常用于构建 RESTful API 时使用。
@RestController
public class MyController {
@GetMapping("/hello")
public String hello() {
return "Hello, Spring Boot!";
}
}
- 解释:
@RestController
自动处理返回的数据为 JSON 格式。
3. @RequestMapping
/ @GetMapping
/ @PostMapping
等
- 作用:
@RequestMapping
是一个通用的请求映射注解,@GetMapping
、@PostMapping
等是其衍生注解,用于简化 HTTP 方法的指定。
@RequestMapping("/greeting")
public String greeting() {
return "Hello, World!";
}
@GetMapping("/hello")
public String hello() {
return "Hello, Spring Boot!";
}
@PostMapping("/create")
public String create() {
return "Creating something!";
}
- 解释:
@RequestMapping
:映射 HTTP 请求,可以指定方法、路径等。@GetMapping
:处理 GET 请求。@PostMapping
:处理 POST 请求。@PutMapping
:处理 PUT 请求。@DeleteMapping
:处理 DELETE 请求。
4. @Autowired
- 作用:自动注入 Spring 容器中的 Bean。
- 使用场景:当你需要自动装配依赖的 Bean 时,使用此注解。
@RestController
public class MyController {
@Autowired
private MyService myService;
@GetMapping("/service")
public String useService() {
return myService.greet();
}
}
@Service
public class MyService {
public String greet() {
return "Hello from Service!";
}
}
- 解释:Spring 会自动将
MyService
注入到MyController
中。
5. @Value
- 作用:用于注入配置文件中的属性值。
- 使用场景:当需要从配置文件(如
application.properties
或application.yml
)中读取值时使用。
@Component
public class MyComponent {
@Value("${myapp.name}")
private String appName;
public String getAppName() {
return appName;
}
}
- 解释:
@Value
注解可以读取配置文件中的属性值,myapp.name
会对应配置文件中的值。
二、常见的功能性注解
6. @Configuration
- 作用:标记一个类为 Spring 配置类,通常用于配置 Bean 的创建。
- 使用场景:定义 Java 配置类时使用。
@Configuration
public class MyConfig {
@Bean
public MyService myService() {
return new MyService();
}
}
- 解释:
@Configuration
表示当前类是配置类,可以用@Bean
来定义 Bean。
7. @Component
/ @Service
/ @Repository
/ @Controller
- 作用:标记类为 Spring 容器管理的 Bean,分别表示普通组件、服务类、数据访问类、控制器类。
- 使用场景:通常用于定义和识别应用中的类为 Bean。
@Component
public class MyComponent {
// 业务逻辑
}
@Service
public class MyService {
// 服务逻辑
}
@Repository
public class MyRepository {
// 数据访问逻辑
}
- 解释:
@Component
:标识一个普通组件类,Spring 会自动注册为 Bean。@Service
:通常用于标识服务类,@Service
是@Component
的派生注解。@Repository
:通常用于标识数据访问层(DAO)。@Controller
:用于标识控制器层,处理请求。
8. @Bean
- 作用:标记一个方法将返回一个 Bean,Spring 会自动注册它到应用的上下文中。
- 使用场景:在
@Configuration
注解的类中使用,用于定义 Bean。
@Configuration
public class MyConfig {
@Bean
public MyService myService() {
return new MyService();
}
}
- 解释:方法返回的对象会被 Spring 容器管理。
9. @EnableAutoConfiguration
- 作用:开启 Spring Boot 的自动配置功能,自动根据类路径中的配置来配置 Spring 应用。
- 使用场景:通常由
@SpringBootApplication
自动包含。
@EnableAutoConfiguration
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
- 解释:开启 Spring Boot 自动配置。
三、生命周期和事件相关注解
10. @PostConstruct
和 @PreDestroy
- 作用:
@PostConstruct
用于标记一个方法在 Bean 初始化之后执行,@PreDestroy
用于标记 Bean 销毁之前执行的清理方法。 - 使用场景:当需要在 Bean 初始化或销毁时执行一些操作时使用。
@Component
public class MyBean {
@PostConstruct
public void init() {
System.out.println("Bean initialized!");
}
@PreDestroy
public void destroy() {
System.out.println("Bean destroyed!");
}
}
- 解释:
@PostConstruct
方法会在 Bean 初始化后执行,@PreDestroy
会在 Bean 销毁前执行。
11. @EventListener
- 作用:用于监听 Spring 应用上下文中的事件。
- 使用场景:当需要监听和处理 Spring 事件时使用。
@Component
public class MyEventListener {
@EventListener
public void onApplicationEvent(ContextRefreshedEvent event) {
System.out.println("Context refreshed!");
}
}
- 解释:
@EventListener
注解会让方法监听某个事件。
四、数据验证相关注解
12. @Valid
和 @Validated
- 作用:
@Valid
用于触发 Bean Validation,验证传入的请求体或参数是否合法。 - 使用场景:常与
@RequestBody
一起使用,用于验证 HTTP 请求中的 JSON 数据。
@PostMapping("/create")
public String create(@Valid @RequestBody User user) {
// 如果验证失败,Spring 会自动抛出异常
return "User created!";
}
- 解释:
@Valid
注解表示需要验证参数。
13. @NotEmpty
/ @NotNull
/ @Size
等
- 作用:这些注解是 Java Bean Validation 的一部分,用于验证字段的值。
public class User {
@NotNull
private String name;
@NotEmpty
private String email;
@Size(min = 6, max = 20)
private String password;
}
- 解释:
@NotNull
:字段值不能为null
。@NotEmpty
:字段值不能为空(空字符串或null
)。@Size
:指定字段的长度范围。
这些是 Spring Boot 中常用的一些注解,它们在项目开发中非常常见,掌握这些注解有助于你更好地理解和使用 Spring Boot。
标签:String,spring,boot,class,Bean,Spring,注解,public From: https://blog.csdn.net/qq_45973421/article/details/145139088