SpringBoot 常用的 50 个注解
1. @SpringBootApplication
代码作用
这是一个组合注解,包含了
@Configuration、@EnableAutoConfiguration和@ComponentScan三个注解。用于标识 Spring Boot 应用程序的入口类,简化 Spring 应用程序的配置和启动过程。
代码用例
1 |
|
代码分析
@SpringBootApplication注解标注在MyApplication类上,表明这是 Spring Boot 应用的入口类。main方法中调用SpringApplication.run(MyApplication.class, args)来启动 Spring Boot 应用程序。
2. @RestController
代码作用
与
@Controller类似,是@Controller和@ResponseBody的组合注解,用于标注一个类为 RESTful 风格的控制器,会自动将返回值转换为 JSON 格式,可处理 HTTP 请求并返回 JSON/XML 格式的响应。
代码用例
1 |
|
代码分析
@RestController注解标注在HelloController类上,表明该类是一个 RESTful 风格的控制器。hello方法使用@GetMapping注解映射/hello请求,返回的字符串会自动转换为 JSON 格式响应给客户端。
3. @RequestMapping
代码作用
是 Spring MVC 框架中的核心注解,用于映射 HTTP 请求和控制器方法之间的关系,可用于类级别和方法级别,指定请求 URL 和 HTTP 方法(GET、POST、PUT、DELETE 等)。
代码用例
1 |
|
代码分析
@RequestMapping("/api")注解在类级别,指定该控制器处理的请求路径以/api开头。- 各个方法上的
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping等注解进一步细化了请求的 URL 和 HTTP 方法。
4. @GetMapping
代码作用
用于映射 HTTP GET 请求,是
@RequestMapping(method = RequestMethod.GET)的快捷方式。
代码用例
1 |
|
代码分析
- 两个
@GetMapping注解分别映射/api/users和/api/users/{id}的 GET 请求,分别用于获取用户列表和根据 ID 获取用户信息。
5. @PostMapping
代码作用
用于映射 HTTP POST 请求,是
@RequestMapping(method = RequestMethod.POST)的快捷方式。
代码用例
1 |
|
代码分析
@PostMapping("/users")注解映射/api/users的 POST 请求,用于创建新用户。@RequestBody注解将 HTTP 请求体中的数据绑定到User对象。
6. @PutMapping
代码作用
用于映射 HTTP PUT 请求,是
@RequestMapping(method = RequestMethod.PUT)的快捷方式。
代码用例
1 |
|
代码分析
@PutMapping("/users/{id}")注解映射/api/users/{id}的 PUT 请求,用于更新指定 ID 的用户信息。@PathVariable注解获取 URL 中的id参数,@RequestBody注解将请求体数据绑定到User对象。
7. @DeleteMapping
代码作用
用于映射 HTTP DELETE 请求,是
@RequestMapping(method = RequestMethod.DELETE)的快捷方式。
代码用例
1 |
|
代码分析
@DeleteMapping("/users/{id}")注解映射/api/users/{id}的 DELETE 请求,用于删除指定 ID 的用户。@PathVariable注解获取 URL 中的id参数。
8. @RequestParam
代码作用
用于获取请求参数的值,将 HTTP 请求中的参数绑定到控制器方法的参数上。
代码用例
1 |
|
代码分析
@RequestParam("page")和@RequestParam("size")分别获取请求参数page和size的值,并将其绑定到方法的page和size参数上。
9. @PathVariable
代码作用
用于将 HTTP 请求路径中的变量绑定到控制器方法的参数上。
代码用例
1 |
|
代码分析
@PathVariable注解将 URL 中的{id}参数绑定到方法的id参数上,用于根据 ID 获取用户信息。
10. @RequestBody
代码作用
用于将 HTTP 请求的主体转换为方法的参数,将请求体中的数据绑定到控制器方法的参数上。
代码用例
1 |
|
代码分析
@RequestBody注解将 HTTP 请求体中的 JSON 或 XML 数据转换为User对象,并传递给createUser方法。
11. @ResponseBody
代码作用
用于将方法的返回值转换为 HTTP 响应的主体,将控制器方法的返回值转换为响应体中的数据。
代码用例
1 |
|
代码分析
- 由于
@RestController是@Controller和@ResponseBody的组合注解,所以这里方法的返回值User对象会自动转换为 JSON 格式的响应体返回给客户端。
12. @Autowired
代码作用
用于自动装配 Spring 容器中的 Bean,根据类型进行依赖注入。
代码用例
1 |
|
代码分析
@Autowired注解标注在userRepository字段上,Spring 会自动从容器中查找类型为UserRepository的 Bean 并注入到该字段。
13. @Component
代码作用
是 Spring 框架中的通用注解,用于标注一个类作为 Spring Bean,让 Spring 容器自动扫描并管理该类。
代码用例
1 |
|
代码分析
@Component注解标注在UserServiceImpl类上,表明该类是一个 Spring Bean,会被 Spring 容器扫描并注册。
14. @Service
代码作用
用于标注一个类作为服务类(Service),是
@Component的一种特殊形式,用于表示业务逻辑层的组件。
代码用例
1 |
|
代码分析
@Service注解标注在UserServiceImpl类上,表明该类是一个服务类,负责处理业务逻辑,会被 Spring 容器扫描并注册。
15. @Repository
代码作用
用于标注一个类作为数据访问对象(DAO),是
@Component的一种特殊形式,用于表示数据访问层的组件。
代码用例
1 |
|
代码分析
@Repository注解标注在UserRepositoryImpl类上,表明该类是一个数据访问对象,负责与数据库交互,会被 Spring 容器扫描并注册。
16. @Configuration
代码作用
用于标注一个类作为配置类,该类中可以定义一个或多个
@Bean方法,用于创建和配置 Spring 应用程序上下文中的 Bean。
代码用例
1 |
|
代码分析
@Configuration注解标注在AppConfig类上,表明该类是一个配置类。@Bean注解的userService和userRepository方法分别返回UserService和UserRepository的实例,这些实例会被注册到 Spring 容器中。
17. @Value
代码作用
用于将配置文件中的属性值注入到 Bean 对象中,支持从配置文件中读取属性值并赋值给类的字段。
代码用例
1 |
|
代码分析
@Component注解标注在MyComponent类上,表明该类是一个 Spring Bean。@Value("${my.property}")注解将配置文件中名为my.property的属性值注入到myProperty字段。
18. @Bean
代码作用
用于将一个方法返回的对象注册到 Spring 容器中,通常在配置类中使用,方法的返回值会被作为一个 Bean 注册到容器中。
代码用例
1 |
|
代码分析
@Configuration注解标注在AppConfig类上,表明该类是一个配置类。@Bean注解的userService和userRepository方法分别返回UserService和UserRepository的实例,这些实例会被注册到 Spring 容器中。
19. @Import
代码作用
用于导入其他配置类或 Bean,将其他配置类的 Bean 定义合并到当前配置类中。
代码用例
1 |
|
代码分析
@Configuration注解标注在AppConfig类上,表明该类是一个配置类。@Import注解导入AppConfig1和AppConfig2两个配置类,将它们的 Bean 定义合并到AppConfig中。
20. @Conditional
代码作用
用于根据条件判断是否创建 Bean 或执行配置,只有当条件满足时,被注解的 Bean 才会被创建。
代码用例
1 |
|
代码分析
@Configuration注解标注在AppConfig类上,表明该类是一个配置类。@Conditional(DatabaseTypeCondition.class)注解表示只有当DatabaseTypeCondition条件满足时,userRepositoryBean 才会被创建。
21. @Profile
代码作用
用于指定配置的环境,如开发环境、测试环境或生产环境,根据不同的环境激活不同的 Bean。
代码用例
1 |
|
代码分析
@Configuration注解标注在AppConfig类上,表明该类是一个配置类。@Profile("dev")注解表示userServiceDevBean 只在开发环境下激活,@Profile("prod")注解表示userServiceProdBean 只在生产环境下激活。
22. @PropertySource
代码作用
用于指定配置文件的位置,让 Spring 应用程序可以使用这些配置文件中的属性。
代码用例
1 |
|
代码分析
@Configuration注解标注在AppConfig类上,表明该类是一个配置类。@PropertySource("classpath:application.properties")注解指定了配置文件application.properties的位置。- 通过
Environment对象可以读取配置文件中的属性值,并传递给UserService实例的构造方法。
23. @Qualifier
代码作用
用于指定注入的 Bean 的名称,当存在多个相同类型的 Bean 时,通过名称来区分并注入指定的 Bean。
代码用例
1 |
|
代码分析
@Component注解标注在UserServiceImpl类上,表明该类是一个 Spring Bean。@Autowired注解用于自动装配UserRepository类型的 Bean,@Qualifier("userRepositoryImpl")注解指定要注入的 Bean 名称为userRepositoryImpl。
24. @ExceptionHandler
代码作用
用于处理异常,在控制器中指定一个方法来处理特定类型的异常。
代码用例
1 |
|
代码分析
@ControllerAdvice注解标注在GlobalExceptionHandler类上,表明该类是一个全局异常处理器。@ExceptionHandler(Exception.class)注解指定handleException方法处理所有类型的异常,将异常信息封装到ModelAndView对象中并返回。
25. @ResponseStatus
代码作用
用于指定异常的HTTP响应状态码。
代码用例
1 |
|
代码分析
@ResponseStatus(HttpStatus.OK)注解标注在getUserDetails方法上,指定该方法正常返回时的HTTP响应状态码为OK。@ResponseStatus(HttpStatus.NOT_FOUND)注解标注在handleUserNotFoundException方法上,指定当处理UserNotFoundException异常时的HTTP响应状态码为NOT_FOUND。
26. @ControllerAdvice
代码作用
用于全局处理异常。
@ControllerAdvice是Spring框架中的一个注解,用于定义全局控制器通知。在Spring MVC框架中,控制器通知是一些特殊的组件,它们可以在控制器方法执行前、执行后或抛出异常时执行一些额外的逻辑处理。使用@ControllerAdvice注解可以定义全局控制器通知,它可以应用于所有的控制器。
代码用例
1 |
|
代码分析
@ControllerAdvice注解标注在GlobalControllerAdvice类上,表明该类是一个全局控制器通知。@ModelAttribute("currentUser")注解标注的getCurrentUser方法会在所有控制器方法执行前执行,用于将当前登录用户信息添加到模型中。@InitBinder注解标注的initBinder方法会在所有控制器方法执行前执行,用于注册自定义的属性编辑器。@ExceptionHandler(Exception.class)注解指定handleException方法处理所有类型的异常,将异常信息封装到ModelAndView对象中并返回。
27. @CrossOrigin
代码作用
用于解决跨域问题。
@CrossOrigin是Spring框架中的一个注解,用于解决跨域资源共享(CORS)问题。跨域资源共享是浏览器安全策略的一部分,它限制了浏览器在不同域名之间发送和接收HTTP请求。使用@CrossOrigin注解可以指定允许跨域访问的域名和HTTP方法。
代码用例
1 |
|
代码分析
@RestController注解标注在ApiController类上,表明该类是一个RESTful风格的控制器。@RequestMapping("/api")注解在类级别,指定该控制器处理的请求路径以/api开头。@CrossOrigin(origins = "http://localhost:8080", methods = {RequestMethod.GET, RequestMethod.POST})注解指定允许来自http://localhost:8080域名的GET和POST请求访问该控制器中的方法。
28. @Async
代码作用
用于将方法标记为异步执行。在Spring框架中,如果一个方法需要执行一些比较耗时的操作,如果这个方法是在主线程中执行,就会导致主线程被阻塞,用户界面无法响应用户的操作。使用
@Async注解可以将这个方法的执行异步化,让主线程继续执行其他任务,提高应用程序的响应性能。
代码用例
1 |
|
代码分析
@Service注解标注在UserService类上,表明该类是一个服务。@Async注解标注在getUserDetailsAsync方法上,表示这个方法需要异步执行,查询用户信息的操作在异步线程中执行,不会阻塞主线程,且该方法返回一个CompletableFuture对象,表示异步执行的结果。
29. @Cacheable
代码作用
用于缓存方法的返回值。在Spring框架中,如果一个方法的返回结果是固定的,而且这个方法的执行比较耗时,我们可以使用
@Cacheable注解将这个方法的返回结果缓存起来,下次执行这个方法时直接从缓存中获取结果,避免重复执行。
代码用例
1 |
|
代码分析
@Service注解标注在UserService类上,表明该类是一个服务。@Cacheable("userCache")注解标注在getUser方法上,表示这个方法的返回结果可以被缓存到名为userCache的缓存中。首次执行时查询用户信息并缓存结果,下次执行若缓存存在则直接获取,无需再次查询。
30. @CacheEvict
代码作用
用于清除缓存。
@CacheEvict是Spring框架中的一个注解,用于清空缓存中的数据。在Spring框架中,如果一个方法的执行会导致缓存数据的失效,我们可以使用@CacheEvict注解将这个方法的缓存数据清空,这样下次执行这个方法时就会重新查询数据并缓存起来。
代码用例
1 |
|
代码分析
@Service注解标注在UserService类上,表明该类是一个服务。@Cacheable("userCache")注解标注的getUser方法,其返回结果会被缓存。@CacheEvict("userCache")注解标注的clearCache方法,会清空名为userCache的缓存,使得下次执行getUser方法时需重新查询并缓存数据。
31. @CachePut
代码作用
用于更新缓存中的数据。
@CachePut是Spring框架中的一个注解,用于更新或添加缓存中的数据。在Spring框架中,如果一个方法的执行会导致缓存数据的更新或添加,我们可以使用@CachePut注解将这个方法的返回结果更新或添加到缓存中。
代码用例
1 |
|
代码分析
@Service注解标注在UserService类上,表明该类是一个服务。@Cacheable("userCache")注解标注的getUser方法,其返回结果会被缓存。@CachePut("userCache")注解标注的updateUser方法,在更新用户信息后,会将返回的更新后的用户信息更新或添加到名为userCache的缓存中,以便下次getUser方法可获取最新缓存数据。
32. @Transactional
代码作用
用于启用事务管理功能。
@Transactional是Spring框架中的一个注解,用于标识一个方法或类需要使用事务进行操作。在Spring框架中,如果一个方法需要对数据库进行操作,我们可以使用@Transactional注解来确保这个操作在一个事务中进行,从而保证操作的原子性、一致性、隔离性和持久性。
代码用例
1 |
|
代码分析
@Service注解标注在UserService类上,表明该类是一个服务。@Transactional注解标注在类上,表示该类中的createUser和updateUser方法都需要使用事务进行操作,userRepository的操作都在一个事务中进行,以保证操作的原子性、一致性、隔离性和持久性。
34. @EnableAspectJAutoProxy
代码作用
用于启用AOP功能。
@EnableAspectJAutoProxy是Spring框架中的一个注解,用于启用自动代理功能,以便使用AOP(面向切面编程)进行编程。在Spring框架中,如果需要使用AOP来实现某些功能,我们可以使用@EnableAspectJAutoProxy注解来启用自动代理功能,从而在运行时自动为我们生成代理对象,以便进行切面编程。
代码用例
1 |
|
代码分析
@Configuration注解标注在AppConfig类上,表明该类是一个配置类。@EnableAspectJAutoProxy注解标注在类上,表示这个配置类需要启用自动代理功能。@Bean注解标注的myAspect方法返回一个MyAspect实例,myAspect类用于实现切面编程功能,@Bean注解标注的userService方法返回一个UserService实例,用于实现业务功能。
35. @Aspect
代码作用
用于定义切面。
@Aspect是Spring框架中的一个注解,用于标识一个类为切面类,从而可以在该类中定义切面逻辑以实现AOP(面向切面编程)。在Spring框架中,如果需要使用AOP来实现某些功能,我们可以使用@Aspect注解来标识一个类为切面类。在切面类中,我们可以定义切面逻辑,包括切入点、通知类型和切面顺序等,从而实现AOP编程的功能。
代码用例
1 |
|
代码分析
@Aspect注解标注在MyAspect类上,表明该类是一个切面类,@Component注解用于将该类纳入Spring容器管理。@Before("execution(* com.example.UserService.*(..))")注解标注的beforeAdvice方法,定义了在com.example.UserService类中所有方法执行前执行的通知逻辑。@After("execution(* com.example.UserService.*(..))")注解标注的afterAdvice方法,定义了在com.example.UserService类中所有方法执行后执行的通知逻辑。
36. @Pointcut
代码作用
用于定义切点。
@Pointcut是Spring框架中的一个注解,用于定义一个切入点,从而可以在该切入点上定义通知类型以实现AOP(面向切面编程)。在Spring框架中,如果需要使用AOP来实现某些功能,我们可以使用@Pointcut注解来定义一个切入点。在切入点上,我们可以定义切面逻辑,包括通知类型和切面顺序等,从而实现AOP编程的功能。
代码用例
1 |
|
代码分析
@Aspect注解标注在MyAspect类上,表明该类是一个切面类,@Component注解用于将该类纳入Spring容器管理。@Pointcut("execution(* com.example.UserService.*(..))")注解标注的userServicePointcut方法定义了一个切入点,@Before("userServicePointcut()")注解标注的beforeAdvice方法和@After("userServicePointcut()")注解标注的afterAdvice方法分别定义了在该切入点对应的目标方法执行前和执行后的通知逻辑。
37. @Before
代码作用
用于在方法执行前执行通知。
@Before是Spring框架中的一个注解,用于定义在目标方法执行前执行的通知类型,以实现AOP(面向切面编程)。在Spring框架中,如果需要在目标方法执行前执行某些操作,我们可以使用@Before注解来定义一个通知类型。在这个通知类型中,我们可以编写自己的逻辑代码,从而实现AOP编程的功能。
代码用例
1 |
|
代码分析
@Aspect注解标注在MyAspect类上,表明该类是一个切面类,@Component注解用于将该类纳入Spring容器管理。@Before("execution(* com.example.UserService.*(..))")注解标注的beforeAdvice方法,定义了在com.example.UserService类中所有方法执行前执行的通知逻辑,即打印Before advice is executed.。
38. @After
代码作用
用于在方法执行后执行通知。
@After是Spring框架中的一个注解,用于定义在目标方法执行后执行的通知类型,以实现AOP(面向切面编程)。在Spring框架中,如果需要在目标方法执行后执行某些操作,我们可以使用@After注解来定义一个通知类型。在这个通知类型中,我们可以编写自己的逻辑代码,从而实现AOP编程的功能。
代码用例
1 |
|
代码分析
@Aspect注解标注在MyAspect类上,表明该类是一个切面类。@Component注解用于将MyAspect类纳入Spring容器管理。@After("execution(* com.example.UserService.*(..))")注解标注的afterAdvice方法,定义了在com.example.UserService类中所有方法执行后执行的通知逻辑,即打印After advice is executed.。
39. @Around
代码作用
用于在方法执行前后执行通知。
@Around是Spring框架中的一个注解,用于定义在目标方法执行前后执行的通知类型,以实现AOP(面向切面编程)。在Spring框架中,如果需要在目标方法执行前后执行某些操作,我们可以使用@Around注解来定义一个通知类型。在这个通知类型中,我们可以编写自己的逻辑代码,从而实现AOP编程的功能。
代码用例
1 |
|
代码分析
@Aspect注解标注在MyAspect类上,表明该类是一个切面类。@Component注解用于将MyAspect类纳入Spring容器管理。@Around("execution(* com.example.UserService.*(..))")注解标注的aroundAdvice方法,定义了在com.example.UserService类中所有方法执行前后的通知逻辑。在方法执行前打印Before advice is executed.,通过joinPoint.proceed()执行目标方法,在方法执行后打印After advice is executed.,并返回目标方法的执行结果。
40. @AfterReturning
代码作用
用于在方法返回结果后执行通知。
@AfterReturning是Spring框架中的一个注解,用于定义在目标方法返回结果后执行的通知类型,以实现AOP(面向切面编程)。在Spring框架中,如果需要在目标方法返回结果后执行某些操作,我们可以使用@AfterReturning注解来定义一个通知类型。在这个通知类型中,我们可以编写自己的逻辑代码,从而实现AOP编程的功能。
代码用例
1 |
|
代码分析
@Aspect注解标注在MyAspect类上,表明该类是一个切面类。@Component注解用于将MyAspect类纳入Spring容器管理。@AfterReturning(pointcut = "execution(* com.example.UserService.*(..))", returning = "result")注解标注的afterReturningAdvice方法,定义了在com.example.UserService类中所有方法返回结果后执行的通知逻辑。当目标方法返回结果时,将结果传递给afterReturningAdvice方法,并打印After returning advice is executed. Result is以及结果内容。
41. @AfterThrowing
代码作用
用于在方法抛出异常后执行通知。
@AfterThrowing是Spring框架中的一个注解,用于定义在目标方法抛出异常后执行的通知类型,以实现AOP(面向切面编程)。在Spring框架中,如果需要在目标方法抛出异常后执行某些操作,我们可以使用@AfterThrowing注解来定义一个通知类型。在这个通知类型中,我们可以编写自己的逻辑代码,从而实现AOP编程的功能。
代码用例
1 |
|
代码分析
@Aspect注解标注在MyAspect类上,表明该类是一个切面类。@Component注解用于将MyAspect类纳入Spring容器管理。@AfterThrowing(pointcut = "execution(* com.example.UserService.*(..))", throwing = "ex")注解标注的afterThrowingAdvice方法,定义了在com.example.UserService类中所有方法抛出异常后执行的通知逻辑。当目标方法抛出异常时,将异常对象传递给afterThrowingAdvice方法,并打印After throwing advice is executed. Exception is以及异常信息。
42. @Order
代码作用
用于指定切面的执行顺序。
@Order是Spring框架中的一个注解,用于定义切面的执行顺序。在Spring框架中,如果有多个切面类需要对同一个方法进行切面处理,那么这些切面类的执行顺序可能会影响到最终的结果。为了控制这些切面类的执行顺序,我们可以使用@Order注解来定义它们的执行顺序。@Order注解可以应用在切面类上,用于指定切面执行的顺序。它的参数为一个整数,数值越小表示优先级越高,数值相同时按照类名的自然顺序进行排序。
代码用例
1 |
|
代码分析
@Aspect和@Component注解分别标注在MyAspect1和MyAspect2类上,表明这两个类都是切面类且被纳入Spring容器管理。@Order(1)注解标注在MyAspect1类上,@Order(2)注解标注在MyAspect2类上,指定了MyAspect1的执行顺序优先于MyAspect2。- 两个类中的
@Before("execution(* com.example.UserService.*(..))")注解标注的beforeAdvice方法,定义了在com.example.UserService类中所有方法执行前的通知逻辑,分别打印各自的提示信息。
43. @Slf4j
代码作用
用于简化日志记录。
@Slf4j是Lombok框架中的一个注解,用于在Java类中自动生成日志记录器。在Java开发中,日志记录是非常重要的一环,可以帮助我们更好地了解程序的运行情况,从而更好地进行调试和优化。通常情况下,我们需要手动引入日志框架(如Log4j、SLF4J等)并编写相应的日志记录代码。这些代码可能会比较繁琐,而且容易出现错误。为了简化这个过程,Lombok框架提供了一个@Slf4j注解,可以在Java类中自动生成日志记录器。使用@Slf4j注解非常简单,只需要在Java类中添加这个注解即可。在使用时,我们可以直接使用log变量来记录日志,而不需要再引入其他的日志框架。
代码用例
1 |
|
代码分析
@Slf4j注解标注在MyService类上,自动生成了日志记录器。- 在
doSomething方法中,通过log变量直接调用debug、info、error方法记录不同级别的日志信息,无需手动引入其他日志框架。需注意使用@Slf4j注解需要在编译器中安装Lombok插件,否则可能出现编译错误。
44. @Data
代码作用
用于自动生成JavaBean的getters、setters、toString、hashCode和equals方法。
@Data是Lombok框架中的一个注解,可以自动生成Java类的getter、setter、equals、hashCode和toString等方法。在Java开发中,我们经常需要编写一些POJO类来表示数据结构。这些类通常包含一些成员变量,并且需要编写相应的getter、setter、equals、hashCode和toString等方法。这些方法通常是相似的,而且比较繁琐。为了简化这个过程,Lombok框架提供了一个@Data注解,可以自动生成这些方法。使用@Data注解非常简单,只需要在Java类上添加这个注解即可。在使用时,我们可以直接访问类的成员变量,并且可以自动生成相应的getter、setter、equals、hashCode和toString等方法。
代码用例
1 |
|
代码分析
@Data注解标注在User类上,Lombok会自动为该类的id、name、age成员变量生成对应的getter、setter方法,同时生成equals、hashCode和toString方法,简化了POJO类的编写。
45. @NoArgsConstructor
代码作用
用于生成无参构造函数。
@NoArgsConstructor是Lombok框架中的一个注解,用于自动生成一个无参构造方法。在Java开发中,我们经常需要编写一些POJO类来表示数据结构。这些类通常包含一些成员变量,并且需要编写相应的构造方法。在某些情况下,我们可能需要编写一个无参构造方法,用于创建一个对象的实例。这个构造方法通常是简单的、无需参数的。为了简化这个过程,Lombok框架提供了一个@NoArgsConstructor注解,可以自动生成一个无参构造方法。使用@NoArgsConstructor注解非常简单,只需要在Java类上添加这个注解即可。在使用时,我们可以直接创建对象的实例,而不需要手动编写无参构造方法。
代码用例
1 |
|
代码分析
@NoArgsConstructor注解标注在User类上,Lombok自动为User类生成了一个无参构造方法。这样在其他类中可以直接创建User对象的实例,无需手动编写无参构造方法,但使用该注解需要在编译器中安装Lombok插件,否则可能出现编译错误。
46. @AllArgsConstructor
代码作用
用于生成全参构造函数。
@AllArgsConstructor是Lombok框架中的一个注解,用于自动生成一个全参构造方法。在Java开发中,我们经常需要编写一些POJO类来表示数据结构。这些类通常包含一些成员变量,并且需要编写相应的构造方法。在某些情况下,我们可能需要编写一个全参构造方法,用于初始化所有成员变量。这个构造方法通常包含所有成员变量作为参数。为了简化这个过程,Lombok框架提供了一个@AllArgsConstructor注解,可以自动生成一个全参构造方法。使用@AllArgsConstructor注解非常简单,只需要在Java类上添加这个注解即可。在使用时,我们可以直接创建对象的实例,并传入相应的参数,而不需要手动编写全参构造方法。
代码用例
1 |
|
代码分析
@AllArgsConstructor注解标注在User类上,Lombok自动为User类生成了一个包含id、name、age三个参数的全参构造方法。在其他类中创建User对象实例时,可以直接传入对应参数,无需手动编写全参构造方法,但需安装Lombok插件,否则可能编译出错。
47. @Builder
代码作用
用于生成Builder模式的构造函数。
@Builder是Lombok框架中的一个注解,用于自动生成一个Builder模式的构造器。在Java开发中,我们经常需要编写一些POJO类来表示数据结构。这些类通常包含一些成员变量,并且需要编写相应的构造方法。在某些情况下,我们可能需要编写一个Builder模式的构造器,用于方便地创建对象实例。Builder模式是一种创建对象的设计模式,它可以通过链式调用的方式设置对象的属性,并最终创建一个不可变的对象。为了简化这个过程,Lombok框架提供了一个@Builder注解,可以自动生成一个Builder模式的构造器。使用@Builder注解非常简单,只需要在Java类上添加这个注解即可。在使用时,我们可以使用链式调用的方式设置对象的属性,并最终创建一个不可变的对象。
代码用例
1 |
|
代码分析
@Builder注解标注在User类上,Lombok自动为User类生成了Builder模式的构造器。这样在其他类中创建User对象时,可以通过链式调用的方式设置id、name、age等属性,最终创建一个不可变的User对象,但使用该注解需安装Lombok插件,否则可能编译失败。
48. @EqualsAndHashCode
代码作用
用于生成hashCode和equals方法。
@EqualsAndHashCode是Lombok框架中的一个注解,用于自动生成equals()和hashCode()方法。在Java开发中,我们经常需要比较两个对象是否相等,并且需要根据对象的属性生成一个hashCode值。为了简化这个过程,Lombok框架提供了一个@EqualsAndHashCode注解,可以自动生成equals()和hashCode()方法。使用@EqualsAndHashCode注解非常简单,只需要在Java类上添加这个注解即可。在使用时,Lombok会根据类的属性自动生成equals()和hashCode()方法。如果两个对象的所有属性都相等,那么它们的equals()方法返回true,并且它们的hashCode()方法返回相同的值。
代码用例
1 |
|
代码分析
@EqualsAndHashCode注解标注在User类上,Lombok会根据User类的id、name、age成员变量自动生成equals和hashCode方法。当比较两个User对象时,会根据这些属性判断是否相等并生成相应的hashCode值。
49. @ToString
代码作用
用于生成toString方法。
@ToString是Lombok框架中的一个注解,用于自动生成toString()方法。在Java开发中,我们经常需要将对象转换为字符串,以便于输出或日志记录。为了简化这个过程,Lombok框架提供了一个@ToString注解,可以自动生成toString()方法。使用@ToString注解非常简单,只需要在Java类上添加这个注解即可。在使用时,Lombok会根据类的属性自动生成toString()方法,这个方法将输出类的名称和所有属性的名称和值。如果需要排除某些属性,可以使用exclude属性来指定排除的属性。
代码用例
1 |
|
代码分析
@ToString(exclude = "password")注解标注在User类上,Lombok会自动为User类生成toString方法。生成的toString方法会输出类名以及id、name属性的名称和值,由于使用了exclude = "password",所以password属性不会在toString方法的输出中出现。
50. @Getter
代码作用
用于生成getters方法。
@Getter是Lombok框架中的一个注解,用于自动生成getter方法。在Java开发中,我们经常需要为类的属性编写getter和setter方法。为了简化这个过程,Lombok框架提供了一个@Getter注解,可以自动生成getter方法。使用@Getter注解非常简单,只需要在Java类上添加这个注解即可。在使用时,Lombok会根据类的属性自动生成对应的getter方法。如果需要生成setter方法,可以使用@Setter注解。
代码用例
1 |
|
代码分析
@Getter注解标注在User类上,Lombok会自动为User类中的private Long id、private String name和private Integer age属性生成对应的getter方法,如getId()、getName()和getAge(),从而避免了手动编写这些方法的繁琐过程。