一、Spring常用注解
一.IOC相关注解
IOC指的是将类注册为Bean交由Spring容器进行控制。
1、@Component(@Service/@Repository/@Controller)
这四个注解是等价的,主要用于将标记的类注册到Spring容器中
- @Component:通用注解,不知道写什么就写这个
- @Controller:Controller层注解
- @Service:Service层注解,添加在实现类上。
- @Repository应用中持久层Mapper上的
2、@Configuration和@Bean
@Configuration常和@Bean一起配合使用。
@Configuration:配置类,注解标注在类上,相当于Spring XML中的Beans。
3、@Value和@ConfigurationProperties
@ConfigurationProperties:用在类上或者方法上
@Value:用在对象的变量属性上,表示给他付个值。
4、@Autowired(@Qualifier/@Resource)
@Autowired
根据属性类型进行自动装配
@Autowired(required=true),默认值,表示注入的时候,该bean必须存在,否则就会注入失败。
@Autowired(required=false):表示忽略当前要注入的bean,如果有直接注入,没有跳过,不会报错。
@Qualifier
根据属性名称进行注入,如果要使用,必须和@Autowired一起使用。
@Resource
Java原生注解,可以根据类型注入,也可以根据名称注入。
二.AOP相关注解
AOP指的是面向切面编程,对一个方法进行动态代理,在这个方法执行之前,执行之后,环绕等处进行方法增强。
常用的代理有两种,一种是JDK自带的,但是这种有个缺点只能支持接口。因此基本上使用的都是Cglib进行动态代理。
1、@Aspect
把当前类标识为一个切面供容器
2、@Pointcut
切入点
3、@Before
前置增强
4、@Around
环绕增强
@Around(“execution(* aop.CGLIBAOP.StudentAop.add(…))”)
public void around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
System.out.println(“环绕之前”);
//被增强方法
proceedingJoinPoint.proceed();
System.out.println("环绕之后");
}
5、@After
后置增强
6、@AfterReturning
返回增强
7、@AfterThrowing
异常增强
三.参数校验相关注解
1、@Validated
@Validated:参数校验
四.事务相关注解
1、 @Transactional
@Transactional默认只回滚RuntimeException 或者 Error,需要进行配置,才能触发Exception回滚。
需要配置rollbackFor,只要是个异常就抛出。
@Transactional(rollbackFor = Exception.class)
五.缓存相关注解(缓存注解不常用,最常用的是是第一个,因为最好是显式的去调用缓存)
1、@PostConstruct
当bean创建完成的时候,会后置执行@PostConstruct修饰的方法
/**
* 项目启动时,初始化参数到缓存
*/
@PostConstruct
public void init()
{
List<SysConfig> configsList = configMapper.selectConfigList(new SysConfig());
for (SysConfig config : configsList)
{
redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
}
}
2、@EnableCaching
开启基于注解的缓存
3、@Cacheable
4、@CachePut
5、@CacheEvict
6、@CacheConfig
六.Swagger配置文件相关注解
1、@EnableSwagger2
七.定时任务注解
1、@EnableScheduling
定义在主启动类上,意思是开启定时任务。
2、@Scheduled
定义在方法上,配置定时执行任务。
八.异步任务注解
1、@EnableAsync
定义在主启动类上,意思是开启异步任务。
2、 @Async
定义在方法上,意思是为异步方法
二、SpringMVC常用注解
一.@RequestMapping(@GettingMapping/@PostMapping)
- @RequestMapping:用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
- @GettingMapping:=@RequestMapping指定Method=Get
- @PostMapping:=@RequestMapping指定Method=POST
二.@ResponseBody和@RequestBody
- @RequestBody:指的是方法接收到的是一个对象,而不是一个参数。
使用@RequestBody,是用于接收Content-Type为application/json类型的请求,数据类型是JSON:{“aaa”:“111”,“bbb”:“222”}。
不使用@RequestBody注解时,可以接收Content-Type为application/x-www-form-urlencoded类型的请求所提交的数据,数据格式:aaa=111&bbb=222 ,form表单提交以及jQuery的.post()方法所发送的请求就是这种类型。
@ResponseBody;
三.@RequestParam和@PathVariable
@PathVariable:主要用来获取 URL 参数,Spring Boot 支持 Restfull 风格的 URL,比如一个 GET 请求携带一个参数 id,我们将 id 作为参数接收,可以使用 @PathVariable 注解。如下:
@RequestMapping(value="/user/{username}")
public String userProfile(@PathVariable(value="username") String username) {
return "user"+username;
}
对应URL为
localhost:8080/user/zhangsan
@RequestParam:和@PathVariable在功能上看没有任何区别,但是URL不同。
@RequestMapping(value="/user")
public String getUserBlog(@RequestParam(value="username") String username) {
return "blogId="+blogId;
}
localhost:8080/user/?username=zhangsan
三、Mybatis常用注解
常用Mybatis注解
四、SpringBoot常用注解
一.SpringBoot核心注解
1、@SpringBootConfiguration
@SpringBootConfiguration的内部还有一个@Configuration,表示当前类为一个配置类(XML配置文件的注解表现形式),并可以被组件扫描器扫描。
2、@EnableAutoConfiguration(最核心注解,加载操作)
帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot,并创建对应配置类的Bean,并把该Bean实体交给IoC容器进行管理。
3、@ComponentScan(定义扫描范围)
@ComponentScan主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中
4、@SpringBootApplication
1,2,3同时生效=@SpringBootApplication
五、SpringCloudAlibaba常用注解
一.Nacos
1、@EnableDiscoveryClient
二.Feign
1、@EnableFeignClients
Feign本质上是一个HttpClient,此处是开启Feign服务。
2、@FeignClient
定义一个调用某个服务地址的Feign客户端,可以配合Sentinel实现。
@FeignClient(contextId = "remoteLogService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteLogFallbackFactory.class)
public interface RemoteLogService
{
}
三.Sentinel
1、@SentinelResource
熔断是异常(慢调用,响应时间超时,发生异常)的托底,限流是对超量并发(访问量过大,以信号量进行控制,Hystrix默认的是线程池)的托底。
@GetMapping("/user/{id}")
//限流降级
@SentinelResource(value="user",blockHandler="exceptionHandler",fallback = "getByIdfallback")
public User getById(@PathVariable Long id){
int i = (int) (1 / id); //方法异常,触发熔断
return new User(id,"zs:"+id, "我是zs");
}
四.GateWay
没有注解
五.Seata
1、@GlobalTransactional
@GlobalTransactional(name = "fsp-create-order", rollbackFor = Exception.class)
public void create(Order order) {
}
六、SpringCloud常用注解
一.Eureka
二.