常见的注解

本文详细介绍了Spring框架中的核心注解,包括@Configuration、@ComponentScan、@Bean等,以及AOP、Controller层相关注解。此外,还涵盖了微服务阶段的重要注解,如@RefreshScope、@Slf4j、@SentinelResource等,全面解析了这些注解的用途和工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring中常见的注解

1、@Configuration      标识当前类是配置类
2、@ComponentScan 包扫描注解 扫描注解
3、@Bean 标识该方法的返回值交给Spring容器管理
4、@Scope 控制多例和单例
5、@Lazy 懒加载
6、@PostConstruct 初始化方法
7、@PreDestroy 销毁方法
8、@Component 将当前类未来的对象交给容器管理
9、@Autowired 按照类型进行注入
10、@Qualifier 按照名称进行注入
11、@Repository 标识持久层注解
12、@Service 标识Service层
13、@Controller 标识Controller层
14、@Value 为属性赋值 @Value("${key}")
15、@PropertySource 加载指定路径的配置文件properties
16、@Aspect 标识当前类是一个切面类
17、@Pointcut 用于定义切入点表达式 表达式写法4种
18、@EnableAspectJAutoProxy 让AOP的注解有效果
19、@Before AOP-前置通知
20、@AfterReturning AOP-后置通知
21、@AfterThrowing AOP-异常通知
22、@After AOP-最终通知
23、@Around AOP-环绕通知
24、@Order(1) //可以利用order关键字 实现AOP的排序 数字越小越先执行.
25、@ResponseBody 将返回的数据转化为JSON串, 如果是字符串本身 原数据返回
26、@RequestMapping("/hello") 实现浏览器的请求路径与方法的映射
27、@PathVariable restFul结构,接收参数的注解.
28、@GetMapping("") 只能接收GET请求类型
29、@DeleteMapping("") 只能接收DELETE请求类型
30、@PostMapping("") 只能接收POST请求类型
31、@PutMapping("") 只能接收PUT请求类型
32、@RestController 表示Controller类,同时要求返回值为JSON
33、@CrossOrigin 允许跨域访问
34、@RequestBody 参数接收时,将JSON串转化为java对象 json中的key与对象的属性一致.
35、@Data lombok动态生成get/set/toString/equals/hashcode等方法
36、@Accessors 控制是否开启链式加载结构
37、@NoArgsConstructor 生成无参构造方法
38、@AllArgsConstructor 生成全参构造方法
39、@Mapper mybatis将当前的接口交给Spring容器管理. Map<类名小写,JDK动态代理对象>
40、@SpringBootTest 该注解的作用在进行代码测试时启动spring容器,之后动态的获取对象 注意包路径 主启动类的同包及子包中.
41、@Param Mybatis中将参数封装为Map集合. @Param(“maxAge”) int maxAge
42、@Alias Mybatis中定义对象的别名 @Alias(“User”)
43、@MapperScan Mybatis中扫描指定包路径的接口 为其创建代理对象.
44、@Insert Mybatis 新增操作注解
45、@Update Mybatis 修改操作注解
46、@Delete Mybatis 删除操作注解
47、@Select Mybatis 查询操作注解
48、@Transactional Spring中用来控制事务
49、@RestControllerAdvice Controller层的全局异常处理
50、@ExceptionHandler 按照某种异常类型进行拦截
51、@TableName(“item_cat”) MybatisPlus注解POJO与数据表绑定 注意表名
52、@TableId(type = IdType.AUTO) MybatisPlus注解 标识主键/主键自增
53、@TableField(exist = false) MybatisPlus注解 标识属性是否存在,及名称是否一致54、@TableField("createdTime")  告诉MP,下面的这个对象使用后面这个表示

微服务阶段

55、@RefreshScope

将被注解的类重新启动,使外部感知(浏览器)和内部感知(输出台)的日志等级相同,也就是说,这个注解底层又重新启动了一次,死而后生,因为类中定义的对象(logger、logLevel),只有在初始化的时候才会被重新赋予新的对象,所以就是重新启动了被注解的类

56、@Slf4j

表示Spring自动创建了log对象,即可以直接使用log对象

57、@SentinelResource(value = "doGetResource",blockHandlerClass = ResourceBlockHandler.class,blockHandler = "doHander")

这个注解是配合使用的,表示不满意spring底层设置的异常显示方式,选择自己设置的显示方式

value = "doGetResource"表示Controller中的对象使用的方法,程序正常运行时返回这个方法的返回值

blockHandlerClass = ResourceBlockHandler.class 表示程序运行异常时,使用这个类中的方法

blockHandler = "doHander" 表示程序运行异常时,使用的指定方法

详情参考:

01-sca——sca-provider——ProviderSentinelController、ResourceBlockHandler、ResourSerivce

58、@LoadBalanced

用于描述RestTemplate对象,让系统底层为RestTemplate对象赋能,对请求过程进行拦截

详情参考:

01-sca——sca-Consumer——ConsumerApplication

59、@EnableFeignClients 

在主启动类上进行标注,告诉底层启动feign starter组件,启用Feign服务必要的注解

60、@FeignClient(value="sca-provider",contextId = "FeginSerivce",fallbackFactory = FfallbackFactory.class)

表示使用Feign方式进行http请求调用,告诉Feign Starter,在项目启动时,为此注解描述的接口创建实现类-代理类

value="sca-provider"  表示调用的项目名称

contextId = "FeginSerivce" 表示Fegin描述的接口

fallbackFactory = FfallbackFactory.class 表示实现Fegin接口的实现类

详情参考:

01-sca——sca-Consumer——ConsumerApplication、FeginSerivce、FfallbackFactory

61、@EnableAuthorizationServer

这个注解表示在Oauth2规范中启动认证和授权

62、@AllArgsConstructor

表示启用构造函数的方式进行对象注入,这个方法就可以不写@Autowired

63、@EnableResourceServer

一般是资源服务器需要,开启资源访问控制

详情参考:

02-sso——sso-resource——config——ResourceConfig

64、@EnableGlobalMethodSecurity(prePostEnabled = true)

//开启方法上的权限检查,必须用权限才能访问,与方法上的@PreAuthorize注解配合使用

详情参考:

02-sso——sso-resource——config——ResourceConfig

65、@PreAuthorize

详情参考:

02-sso——sso-resource——Controller——ResourceController

66、@TableField("createdTime") 

告诉MP,下面的这个对象使用后面这个表示

67、@Async

表示不使用TomCat中的线程,从Spring中的线程池中另行选择线程进行服务,因为TomCat中线程是有限的,使用另外的线程可以保证TomCat线程的使用,一般配合@EnableAsync使用

68、@EnableAsync

在主启动类上进行表注,告诉程序选择其他线程进行服务,一般配合@Async使用

69、@Transactional(readOnly = true)

可以用在类上 也可以用在方法上

底层AOP的方式进行事务控制,运用的代理对象时CGLib代理对象
* 1、表示这个类下面的方法都不启动日志记录,可以使查询更加便捷,因为系统底层会启动日志服务,这里是把日志服务关闭,不过这种方法仅仅使用在查询select,如果是删除delect  新增instern  修改 update  的话,还是启动日志服务比较好,因为这样能看到哪里出错了
* 2、另外@Transactional这个注解,最主要的作用就是保证业务的原子性,就是保证业务成功都成功,失败都失败
* 3、readOnly的属性值为true  表示是提高事务的性能,(例如取消了回滚日志的记录)

70、@Cacheable(value = "userPermissions",key = "#userId")

1、//缓存切入点,表示再次查询的时候使用缓存,减少访问数据库的次数

71、@EnableCaching  

在主启动类上添加,配合注解70@Ccheable使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值