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