Spring注解总结

一、 SpringBoot核心注解

1、@SpringBootApplication

由@SpringBootApplication注解描述的类为springboot项目的启动入口类,该类有且仅有一个。
该注解是Spring Boot最核心的注解,用在 Spring Boot的主启动类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项功能。实际上该注解是@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解的组合。由于这些注解一般都是一起使用,所以Spring Boot提供了一个统一的注解@SpringBootApplication。

2、@SpringBootTest 注解用于告诉spring框架,此测试类交给spring管理。springboot项目中所有的单元测试类都使用@SpringBootTest注解进行描述。

3、@Autowired注解描述属性时,用于告诉spring框架要为此属性注入一个值。

4、@Scope 是Spring中用于定义Bean对象作用域的一个注解,其常用的值有:(没有指定scope的时候默认就是singleton作用域)

a) @Scope(“singleton”)单例作用域,此作用域的对象在这个内存只有一份,通过共享设计(池),
实现对象的可重用性,此对象何时创建由懒加载(Lazy)特性设计决定,是否可以被销毁由
spring框架决定(一般是在容器销毁时销毁),适合应用频度比较高的对象。

b) @Scope(“prototype”)多例作用域,此作用域的对象在需要时创建(与懒加载特性无关),
每次从容器获取都是一个新的对象,且这些对象spring框架不负责销毁,适合应用频度比较低的对象。

5、@Lazy注解用于描述类,其目的是告诉spring框架此类支持延迟加载,通常会配合单例作用域使用。

6、@PostConstruct 注解用于描述bean对象生命周期方法中的初始化方法,此方法会在对象的构造方法之后执行。

7、@PreDestroy 注解用于描述Bean对象生命周期方法中的销毁方法,此方法会在对象销毁之前执行(当作用域为prototype时,此方法不会执行)。

8、@Mapper 注解由mybatis框架定义,用于描述数据层接口对象,系统底层启动mybatis框架会基于@Mapper注解的描述,创建其接口实现类,并将实现类对象交给spring管理。

9、@ResponseBody 注解用于告诉Spring MVC要对此方法的返回结果进行转换处理,假如方法返回值为对象(不包含字符串,直接量),Spring MVC可以将其转换为JSON格式的字符串。Spring MVC框架底层默认会使用JackSon API将对象转换为JSON格式字符串。

10、@RequestMapping 注解用来处理请求地址映射,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

11、@Component 是Spring中用于描述Bean类的一个注解。用于告诉Spring这个类的实例由Spring创建,当此对象由Spring创建和管理时,默认会将对象存储到池(Bean池)中。

12、@Repository:标注一个DAO组件类。

13、@Service:标注一个业务逻辑组件类。

14、@Controller:标注一个控制器组件类。

15、@AllArgsConstructor
会生成一个包含所有变量,同时如果变量使用了NotNull annotation , 会进行是否为空的校验,
全部参数的构造函数的自动生成,该注解的作用域也是只有在实体类上,参数的顺序与属性定义的顺序一致。

16、@NoArgsConstructor
无参构造函数

17、@RequiredArgsConstructor
会生成一个包含常量(final),和标识了@NotNull的变量 的构造方法

二、Lombok 常用注解:

1、@Setter 用于为描述的类生成setter方法,不包含final修饰属性。

2、@Getter 用于为描述的类生成getter方法。

3、@ToString 用于为描述的类添加toString方法。

4、@EqualsAndHashCode 用于为描述的类,生成hashCode和equals方法。

5、@NoArgsConstructor 用于为描述的类生成无参的构造方法。

6、@AllArgsConstructor 用于为描述的类生成包含类中所有字段的构造方法。

7、@Data用于为描述的类生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。

8、@Slf4J 用于为描述的类添加一个日志属性对象。

三、Spring AOP常用注解:

1、@Aspect 注解描述的类型为Spring AOP中的切面对象类型。此对象中可以封装:

a)切入点(定义在哪些目标对象的哪些方法上进行功能扩展)

b)通知(封装功能扩展的业务逻辑)

2、@Pointcut(“bean(sysUserServiceImpl)”)

PointCut注解用于定义切入点,具体方式可以基于特定表达式进行实现。例如:

a)bean为一种切入点表达式类型

b)sysUserServiceImpl(首字母小写) 为spring容器中的一个bean的名字
这里的含义是当sysUserServiceImpl对象中的任意方法执行时,都由本切面
对象的通知方法做功能增强。

3、@Around注解用于描述切面中方法,这样的方法会被认为是一个环绕通知(核心业务方法执行之前和之后要执行的一个动作),@Aournd注解内部value属性的值为一个切入点表达式或者是切入点表达式的一个引用(这个引用为一个@PointCut注解描述的方法的方法名)。

此环绕通知使用的切入点为bean(sysUserServiceImpl)
环绕通知特点:
1)编写:
a)方法的返回值为Object
b)方法参数为ProceedingJoinPoint类型
c)方法抛出异常为tThrowable

2)应用:
a)目标方法执行之前或之后都可以进行功能拓展
b)相对于其它通知优先级最高。

ProceedingJoinPoint类为一个连接点类型,此类型的对象用于封装要执行的目标方法相关的一些信息。一般用于@Around注解描述的方法参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学java丶掉头发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值