Spring常用注解

1.基于JAVA配置注解

(@Bean)注解表明该方法会返回一个对象,并需要将其注册为Spring应用上下文中的bean,并且可以在方法中完成依赖注入;
(@Configuration)注解表明此类为配置类,包含了Spring应用上下文中如何创建bean的细节;
(@Component)注解表明该类会作为组件类,并告知Spring要为此类创建bean;
(@ComponentScan(packName))注解表明在指定包下扫描带有Component注解的类,并为其创建bean;
(@AutoWired)注解申明了依赖,自动装配,可以用于属性和set方法;
(@Import(xxx.class))注解将括号中声明的JAVA配置类导入当前配置类;
(@ImportResource(classpath:xxx.xml))注解将括号中声明的XML配置导入当前配置类;
(@Profile())注解表明只有此Profile激活时(配置spring.profile.active和spring.profile.default),此Bean才会被创建,没有Profile注解的总是会被创建;
(@Conditional(? implents Condition))注解表明只有给定条件计算结果为true时才会创建bean,可以用于带@Bean注解的方法上,括号内为实现了Condition接口的类;
(@Primary)当匹配的Bean不止一个时,此注解可以设置首选,避免自动装配时的歧义性;
(@Qualifier)注解使用限定符,在可选Bean上缩小范围最终达到只有1个Bean满足所规定的限制条件;
(@Scope)注解声明了bean的作用域;proxyMode属性设置作用域代理,代理对bean进行懒解释并将调用委托给会话/请求作用域内真正的bean;
(@Aspect)注解表明该类是一个切面;
   -(@Pointcut)注解表明在一个@Aspect切面内定义可重用的切点
   -(@After)注解表明通知方法会在目标方法返回或抛出异常后调用;
   -(@AfterReturning)注解表明通知方法会在目标方法返回后调用;
   -(@AfterThrowing)注解表明通知方法会在目标方法抛出异常后调用;
   -(@Around)注解表明通知方法会将目标方法封装起来;该通知方法需要接受ProceedingJoinPoint作为参数,通过它来调用被通知的方法,当要将控制权交给被通知方法时,需要调用它的proceed方法;
   -(@Before)注解表明通知方法会在目标方法调用之前执行;
   -(@DeclareParents)注解表明将接口引入到bean中;所标注的静态属性指明了要引入的接口;
      -(value)属性指定了哪种类型的bean要引入该接口,+号表示该类的所有子类且不包含该类自身;
      -(defaultImpl)属性指定了为引入功能提供实现的类;
(@EnableAspectJ-AutoProxy)注解表明可以在配置类@Configuration的类级别上使用此注解启动自动代理功能,自动代理会为使用@Aspect注解的bean创建一个代理,此代理会围绕该切面的切点所匹配的bean;
(@EnableWebMvc)启用Spring MVC;
(@Controller)声明一个控制器,基于@Componet注解,辅助实现组件扫描;
   -(@RequetsMapping)注解声明了它们所要处理的请求,可以在类和方法上声明;
       -(value)指定了该方法索要处理的请求路径;
       -(method)属性细化了它所处理的HTTP方法(get, post);
       (@RequestParam) 
       (@PathVariable)

 

2.XML声明

<component-scan:package>声明在指定包中寻找带有Component注解的类,并为其创建bean;
<bean class = ?>导入JAVA配置类;
<import resource = ?> 导入XML配置;
<bean>声明一个bean
   -(id)bean的名称;
   -(class)bean对应的类;
   -(scope)设置bean的作用域;
   -<constructor-arg>表明通过构造器注入依赖
      -(ref)表明通过bean名称(id)注入一个bean引用;
      -(value)表明给定的值以字面量的形式通过构造器注入;
      -(<list>)表明注入包含值的列表;
      -(null)表明注入一个null;
   -<property>表明通过set方法注入依赖
      参数同上;
<aop:scoped-proxy proxy-target-class = “true/false”>设置作用域代理;
<aop:config>顶层的AOP配置元素;
   <aop:advisor>定义AOP通知器;
   <aop:aspect>定义一个切面;
      -(ref)属性引用一个实现切面功能的bean;
      <aop:pointcut />定义一个切点,也可以放在<aop:config>内被多个切面使用;
         -(id)属性表明切点名称;
         -(expression)属性声明了切点表达式;
      <aop:before>定义一个AOP前置通知;
         -(pointcut-ref)属性表明引用的切点名称;
         -(method)属性表明织入切点的方法名称;
      <aop:after>定义AOP后置通知(不管被通知的方法是否执行成功);
      < aop:after-returning >定义AOP返回通知;
      < aop:after-throwing >定义AOP异常通知;
      < aop:around >定义AOP环绕通知;
      <aop:declare-parents>声明了此切面所通知的bean要在它的对象层次结构中拥有新的父类型;
         -(types-matching)属性指定哪种类型的bean要引入该接口,+号表示该类的所有子类且不包含该类自身;
         -(implement-interface)属性指定了上述bean引入的接口类;
         -(default-impl)属性指定了为引入功能提供实现的类;
         -(delegate-ref)属性引用一个实现了引入功能的bean;
<aop: aspectj-autoproxy />启动AspectJ自动代理;

 

 

posted @ 2019-07-12 15:27  Coding小马  阅读(213)  评论(0编辑  收藏  举报