01-注解的理解

常用注解

1.@Component:表示此类作为bean装配到spring容器中。
2.@Bean(name=?):将当前方法返回的对象装配到loc容器中,等同于bean标签,name属性用于定义这个bean的名称,不写默认使用方法名作为名字返回到loC容器中。
3.@Configuration:告诉spring这是一个java配置文件,spring会根据这个文件生成loC容器。
4.@ComponentScan:标记采用和中策略去扫描装配Bean(默认扫描当前类所在的包和子包)。
5.@ComponentScan( "com.xxx.*" )`:其中的 "com.xxx.*" 表示扫描com.xxx包及其所有子包。
6.@ComponentScan( basePackages={"com.xxx.dao"} ):basePackages指定一个数组,数组中定义了所需要扫描的包。
7.@ComponentScan( basePackageClasses={xx.class,xx.class} ):basePackageClasses指定一个数组,数组中定义了所要扫描类的字节码对象。
8.@scope:指定当前Bean是单例(singleton)还是多例(prototype)。
9.@Lazy:延迟加载,配合singleton使用,对多例不生效@Value:为Bean的属性赋值(成员变量,对象等)。
10.@Autowired:自动装配,从Spring容器中查找Bean,找到一个就自动注入,否则抛出NoSuchBeanDefinition异常。
11.@Qualifier:显式的为属性指定要注入哪一个名字的bean,配合@Autowired注解使用。
12.@Mapper 注解的作用:将当前Mapper接口交给Spring管理(为接口提供实现类,并根据实现类创建该类的实例,最后添加到Spring的IoC容器中)。
13.@ResponseBody注解:将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON或字符串等数据。
14.@SpringBootApplication:注解标记当前类为springboot项目的启动类(即入口)。
15.@Value:注解可以为Bean的属性赋值。

16.@SpringbootTest:表示此注解描述的类为spring工程的单元测试类

17.@PostConstruct :此注解描述的方法为生命周期初始化方法,在对象构建以后执行。

18.@PreDestroy :此注解描述的方法为生命周期销毁方法,对象在从spring容器移除之前会先执行这个生命周期销毁方法(prototype作用域对象不执行此方法)。

19.@Mapper:此注解表示此接口交给框架管理,并为其提供一个实现类

20.@ResponseBody将方法的返回值,以特定的格式写入到response的body区域,进而将数据返回给客户端。当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。如果返回值是字符串,那么直接将字符串写到客户端;如果是一个对象,会将对象转化为json串,然后写到客户端。

21.@PathVariable:通过@PathVariable("参数名称")来获取url中的参数值。要求@PathVariable中参数名称必须和url中参数名称一致

22.@PropertySource("classpath:/properties/redis.properties")指定配置文件进行加载,配合@value(${xx})使用

23.@TableName实现pojo对象与数据库表的映射,如果数据库表名与对象名一直,则直接加此注解,反之加@TableName("数据库表名")

24.@TableId(Type=IdType.Auto)设定pojo对象中的id为主键自增

25.@TableField映射数据库字段与pojo对象属性成员变量,用法与@TableName相同

SpringBoot-AOP中的注解:

1.@Aspect 注解用于标识或者描述AOP中的切面类型,基于切面类型构建的对象用于为目标对象进行功能扩展或控制目标对象的执行。

2.@Pointcut注解用于描述切面中的方法,并定义切面中的切入点(基于特定表达式的方式进行描述),在本案例中切入点表达式用的是bean表达式,这个表达式以bean开头,bean括号中的内容为一个spring管理的某个bean对象的名字。

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

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

5.@Before目标方法执行之前执行

6.@AfterReturning目标方法成功结束时执行

7.@AfterThrowing目标方法异常结束时执行

8.@After目标方法结束时执行

9.切入表达式

9.1.@bean:用于匹配指定bean对象的所有方法

      bean("userServiceImpl")指定一个userServiceImpl类中所有方法

      bean(" *userServiceImpl ")指定所有后缀为userServiceImpl类中所有方法

9.2.@within:用于匹配指定包下所有类内的所有方法

      within(" aop.service.* ") 指定当前目录下的所有类的所有方法。

      within(" aop.service..* ") 指定当前目录以及子目录中类的所有方法。

9.3.@execution:应用于方法级别,实现细粒度的切入点表达式定义.

       语法:execution(返回值类型 包名.类名.方法名(参数列表))。

        execution(void aop.service.UserServiceImpl.addUser())匹配addUser方法。

        execution(void aop.service.PersonServiceImpl.addUser(String)) 方法参数必须为String的          addUser方法。

        execution(* aop.service..*.*(..)) 万能配置。

9.4.@annotation:应用于方法级别,实现细粒度的切入点表达式定义

      @annotation(anno.RequiredLog) 匹配有此注解描述的方法。

      @annotation(anno.RequiredCache) 匹配有此注解描述的方法。

10.@Order:定义切面的优先级,数字越小优先级越高,默认优先级比较低

11.@Transactional:此注解加在方法时表示此方法要进行事务管理,假如类和方法上都有@Transactional注解,则方法上的事务特性优先级比较高。

12.@EnableCaching:此注解加在启动类上,以启动缓存配置。

13.@Cacheable:此注解加在方法上表示方法的返回值要存储到Cache中

14.@CacheEvict:此注解加在方法上表示移除此方法的缓存

23.@Param是MyBatis所提供的,作为Dao层的注解,作用是用于传递参数,从而可以与SQL中的的字段名相对应,一般在2=<参数数<=5时使用最佳。使用此注解时,参数传值可以是#{},${},如果没有,只能用#{}

24.@PathVariable中有三个变量name:要绑定到的路径变量的名称。value:经过简单的测试个人觉得与name相同。required:是否必须存在,默认值是True,如果不存在的话会抛出异常,为false时会忽略。

@PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“)

SpringCloud注解:

1. @LoadBalanced 负载均衡注解,会对 RestTemplate 实例进行封装,创建动态代理对象,并切入(AOP)负载均衡代码,把请求分发到集群中的服务器

2.@EnableCircuitBreaker 启用 hystrix 断路器

    启动断路器,断路器提供两个核心功能:

  • 降级,超时、出错、不可到达时,对服务降级,返回错误信息或者是缓存数据

  • 熔断,当服务压力过大,错误比例过多时,熔断所有请求,所有请求直接降级

3.

猜你喜欢

转载自blog.csdn.net/suchaoh/article/details/109339874
01-
今日推荐