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自动代理;