注解
2024年10月8日大约 3 分钟
注解
记录下Spirng常用注解
Controller层注解
@RequestParam
和@RequestBody
它允许你将请求体中的数据直接绑定到一个 Java 对象上,使用消息转换器,而不需要手动解析。可以减少处理 HTTP 请求数据的模板代码,使开发者可以更专注于业务逻辑。而@RequestParam
主要处理简单类型的数据,而@RequestBody
用于处理请求体中的数据,相比更复杂,如 JSON 或 XML 格式的数据。@ResponBody
@RestController= @Controller + @ResponseBody
其中ResponBody作用在controller类或者方法中上,将方法返回值直接响应,如果返回值类型是实体对象/集合,则为JSON格式数据。
IOC&DI注解
@Component
控制反转注解,声明bean的机制注解,主要用于三层架构中的service层与dao层,将类放置于IOC容器中以便实现后续的解耦。它有三种衍生注解:@Controller
,@Service
和@Repository
(标注在数据访问类上,由于与mybatis整合,用的少)。对于一些工具类,并不属于三层结构的,则使用注解@Component
,否则使用衍生注解。@ComponentScan
不需要显示配置,但是实际上已经包含在了启动类声明注解@SpringBootApplication中,默认扫描的范围是启动类所在的包以及其子包。@Autowired
依赖注入注解,主要用于解耦过程中对象声明。例如:
@Autowired
private EmpService EmpService; //右侧无需new service层对象以实现解耦过程。
以下三个注解用来解决多个相同类型bean的情况
@Primary
用于和Component组件注解同时使用,标注优先级。@Qualifier
意思是资格赛,匹配符,通过与Autowored注解同时使用来标注使用哪个bean对象。@Resource
并不是springboot注解,而是jdk注解,不需要与Autowired配合使用,相当于Autowired+Qualifier
Bean注解
@Scope
配置作用域,默认只有单个bean,容器启动时就被创建,设置为prototype之后,每一次使用bean都会创建一个新的实例。@Bean
标注在方法之上,类似于@Component
注解,不过对于第三方(不是自定义的),是无法使用@Component
来标注的,需要用@Bean
来标注外部注解。@Configuration
标注类之上, 注解声明一个配置类,用于统一存放管理第三方bean对象。
Mybatis注解
@Options
使用方法:@Options(keyProperty = "id",useGeneratedKeys=true)
,放在Insert注解之上时,构造的新增对象会拿到一个主键的返回值,否则无返回值。
工具库注解
@Slf4j
@Slf4j 是 Lombok 库提供的一个注解,它用于在类中自动生成一个日志对象,相当于执行创建代码。
异常处理
@RestControllerAdvice
@ExceptionHandler
事务管理
@Transactional
在方法,类,接口之上,表示将该方法交给spring进行事务管理,方法执行前,开启事务;成功执行,提交事务;出现异常,回滚事务。通过参数rollbackfor
控制回滚的异常类型,默认只会回滚运行异常。
AOP
@Aspect
通常与@Component
一同使用,用于标注为AOP程序。
通知类型注解
放在方法前,定义该方法针对的业务范围。即切入点表达式。
@Around
@Before
@After
@AfterReturning
@AfterThrowing