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使用