
Spring Boot注解主要用于简化配置、自动装配组件和实现声明式服务。以下是详细的介绍1、Springboot注解核心注解1.SpringBootApplication作用: 标注一个主程序类表明这是一个Spring Boot应用程序的入口。功能: 这是一个复合注解组合了Configuration、EnableAutoConfiguration和ComponentScan。Configuration: 标识一个类作为配置类类似于Spring XML配置文件。EnableAutoConfiguration: 启用Spring Boot的自动配置机制根据项目中的依赖和应用上下文自动配置Spring应用程序。ComponentScan: 自动扫描指定包及其子包中的Spring组件。示例:SpringBootApplicationpublic class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}}自动配置注解2.EnableAutoConfiguration作用: 启用Spring Boot的自动配置机制根据项目中的依赖和应用上下文自动配置Spring应用程序。细节: 它会尝试根据添加的依赖和项目中的配置自动配置Spring Bean。例如如果项目中有HSQLDB的依赖Spring Boot会自动配置一个内存数据库。示例:EnableAutoConfigurationpublic class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}}3.Configuration作用: 标注一个类作为配置类相当于一个Spring XML配置文件。细节: 配置类可以包含一个或多个Bean注解的方法这些方法会返回要注册到Spring应用上下文中的Bean。示例:Configurationpublic class AppConfig {Beanpublic MyService myService() {return new MyServiceImpl();}}组件扫描和注入注解4.ComponentScan作用: 指定要扫描的包以便发现和注册Spring组件。细节: 默认情况下ComponentScan会扫描主应用类所在的包及其子包。示例:ComponentScan(basePackages com.example)public class MyApplication {}5.Component作用: 将一个类标识为Spring组件Bean可以被Spring容器自动检测和注册。细节:Component是一个通用的注解可以用来标注任何Spring管理的Bean。示例:Componentpublic class MyComponent {}6.Service作用: 标识服务层组件实际上是Component的一个特化用于表示业务逻辑服务。细节: 用于标识服务层的类这些类通常包含业务逻辑。示例:Servicepublic class MyService {}7.Repository作用: 标识持久层组件实际上是Component的一个特化用于表示数据访问组件。数据访问组件Data Access Component通常是指在软件系统中负责数据访问和持久化的部分或模块。在典型的企业应用程序中数据访问组件通常涉及与数据库交互、执行数据操作如增删改查、数据转换和持久化等任务。示例:Repositorypublic class MyRepository {}8.Controller作用: 标识控制层组件实际上是Component的一个特化用于表示Web控制器。细节: 用于标识Spring MVC控制器处理Web请求并返回视图。示例:Controllerpublic class MyController {}9.RestController作用: 标识一个RESTful Web服务的控制器实际上是Controller和ResponseBody的结合。细节: 返回的对象会自动序列化为JSON或XML并写入HTTP响应体中。示例:RestControllerpublic class MyRestController {}数据绑定和验证注解10.RequestMapping作用: 映射HTTP请求到处理方法上GET、POST、PUT、DELETE等。示例:Controllerpublic class MyController {RequestMapping(/hello)public String sayHello() {return hello;}}11.GetMapping作用: 映射HTTP GET请求到处理方法上。示例:RestControllerpublic class MyRestController {GetMapping(/users)public ListUser getUsers() {return userService.getAllUsers();}}12.PostMapping作用: 映射HTTP POST请求到处理方法上。示例:RestControllerpublic class MyRestController {PostMapping(/users)public User13.ResponseBody作用: 将方法的返回值转换为指定格式如JSON、XML作为HTTP响应的内容返回给客户端。细节: 常用于RESTful服务中标识方法返回的对象不是视图名称而是直接写入HTTP响应体中的数据。示例:RestControllerpublic class MyRestController {GetMapping(/hello)ResponseBodypublic String sayHello() {return Hello, World!;}}14.RequestBody作用: 将HTTP请求体的内容如JSON、XML等映射到一个Java对象。细节: 通常用于POST请求中将客户端发送的数据绑定到方法的参数上。示例:RestControllerpublic class MyRestController {PostMapping(/users)public ResponseEntityString addUser(RequestBody User user) {// 处理用户添加逻辑return ResponseEntity.ok(User added successfully);}}15.PathVariable作用: 从URI路径中提取参数值将其映射到方法的参数上。细节: 常用于RESTful服务中允许动态地将URL中的部分作为方法参数使用。示例:RestControllerpublic class MyRestController {GetMapping(/users/{userId})public ResponseEntityUser getUserById(PathVariable Long userId) {// 根据userId查询用户信息User user userService.getUserById(userId);return ResponseEntity.ok(user);}}16.RequestParam作用: 用于从请求中获取参数的值。细节: 可以指定参数的默认值是否必需等属性。适用于处理查询参数或表单数据。示例:RestControllerpublic class MyRestController {GetMapping(/users)public ResponseEntityUser getUserByName(RequestParam String username) {// 根据用户名查询用户信息User user userService.getUserByUsername(username);return ResponseEntity.ok(user);}}这些注解是Spring MVC和Spring Boot中常用的数据绑定和处理注解帮助开发者更方便地处理HTTP请求和响应实现灵活的接口设计和数据交互。数据访问注解17.Entity作用: 标识一个JPA实体。细节: 用于定义一个与数据库表映射的持久化类。示例:Entitypublic class User {IdGeneratedValue(strategy GenerationType.IDENTITY)private Long id;private String name;}18.Table作用: 指定实体对应的数据库表名称。细节: 如果类名与数据库表名不同可以使用Table注解进行指定。示例:EntityTable(name users)public class User {// fields and methods}其他常用注解19.Value作用: 用于将外部属性值注入到Spring Bean中。细节: 可以用于注入属性文件中的值、系统环境变量、系统属性等。示例:Value(${my.property})private String myProperty;20.Autowired作用: 自动装配Bean进行依赖注入。细节: Spring会自动满足Bean的依赖。可以用于字段、构造函数和方法上。示例:Servicepublic class MyService {Autowiredprivate MyRepository myRepository;}21.Bean作用: 用于定义一个Spring Bean。细节: 通常用于配置类中定义的方法返回的对象会被注册为Spring容器中的Bean。示例:Configurationpublic class AppConfig {Beanpublic MyService myService() {return new MyServiceImpl();}}22.Conditional作用: 根据特定条件创建Bean。细节: 可以与自定义条件类一起使用只有在条件满足时Spring才会创建该Bean。示例:BeanConditional(MyCondition.class)public MyService myService() {return new MyServiceImpl();}23.Primary作用: 指定当一个接口有多个实现时优先选择的Bean。示例:ServicePrimarypublic class PrimaryService implements MyService {}24.Qualifier作用: 配合Autowired使用用于指定注入的Bean的名称或ID。示例:Servicepublic class MyService {AutowiredQualifier(myRepositoryImpl)private MyRepository myRepository;}25.Lazy作用: 延迟初始化Bean只有在首次使用时才创建Bean。示例:ServiceLazypublic class LazyService {}26.Scope作用: 指定Bean的作用域单例、多例、请求、会话等。示例:ServiceScope(prototype)public class PrototypeService {}其他注解简化POJO开发的注解这三个注解通常与Lombok一种Java库结合使用用于简化POJOPlain Old Java Object的开发。1.Data作用:Data是一个复合注解集成了ToString、EqualsAndHashCode、Getter、Setter和RequiredArgsConstructor的功能。功能:ToString: 自动生成toString()方法包含所有字段。EqualsAndHashCode: 自动生成equals()和hashCode()方法基于所有非静态和非瞬态字段。Getter和Setter: 自动生成字段的 getter 和 setter 方法。RequiredArgsConstructor: 自动生成包含必需字段的构造方法。示例:import lombok.Data;Datapublic class User {private Long id;private String username;private String email;}编译时Lombok会自动生成如下代码public class User {private Long id;private String username;private String email;// 自动生成的 toString(), equals(), hashCode(), getter 和 setter 方法// 以及包含所有字段的构造方法}2.AllArgsConstructor作用: 自动生成包含所有字段的构造方法。示例:import lombok.AllArgsConstructor;import lombok.Data;DataAllArgsConstructorpublic class User {private Long id;private String username;private String email;}编译时Lombok会自动生成如下构造方法public User(Long id, String username, String email) {this.id id;this.username username;this.email email;}3.NoArgsConstructor作用: 自动生成无参构造方法。示例:import lombok.Data;import lombok.NoArgsConstructor;DataNoArgsConstructorpublic class User {private Long id;private String username;private String email;}编译时Lombok会自动生成如下无参构造方法public User() {// 空构造方法}