Spring的部分注解
@Component(value=""):
在普通pojo类上标注,标明这是一个组件,会将其实例化到spring容器中。value属性用于给定id值,默认值为类名且首字母小写。
@Controller,@Service,@Repository:
作用同**@Component**,主要用来分别标识控制层类,服务层类以及实体层类
@Bean(name=""):
在方法上标注,此方法返回值作为bean加入到spring容器。括号中name的值为自己给定bean的id;省略name的话,id默认为方法名
@Scope(""):
用于给定bean的作用范围,括号内值一般为singleton(单例),prototype(多例)
@Autowired:
标注在类上,spring容器首先会按照类型注入,如果有多个类,则会按名字;其他情况会报错
@Qualifier(value=""):
如果标注在类成员上那么必须与@Autowired一起使用;也可直接标注在方法参数之前
比如public xxx(Qualifier(“希望参数拿到的bean的id名”) Yyyy yyyy)
@Resource(name=""):
直接按照bean的id注入
@Value:
用于注解基本和String数据类型(集合类型只能通过xml来编写)
@Configuraton:
在配置类上标注,标明这是一个spring配置类
@import(value):
在父配置类上标注,用来导入其他子配置类,value的值为子配置类的class文件名
@PropertiyResource(""):
在配置类上标注,用于加载property文件。
其括号内得值为文件名及其路径:classpath:(有包写包)文件名
classpath意义为类路径下
@ComponentScan(basePackages=""):
在配置类上标注,告知spring创建容器时要扫描的包。在xml文件中等同于<context:component-scan base-package=“包名”></context:component-scan>
========================================================================分割线
整合Spring和JUnit:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=XXXX.class)
采用注解配置spring的时候,使用此方式,classes后的值为配置类的class文件
@ContextConfiguration(locations="")
采用xml文件配置spring的时候,使用此方式,locations后的值为xml文件的类路径及其名字
========================================================================分割线
SpringAop注解方式:
@EnableAspectJAutoProxy:
在配置类上标注,开启支持aop注解功能
等同于xml文件中aop:aspectj-autoproxy</aop:aspectj-autoproxy>
@Aspect:
表示当前类是切面类
@Before,@AfterReturning,@AfterThrowing,@After,@Around:
分别在前置通知,后置通知,异常通知,最终通知和环绕通知方法上标注。注意:由于spring的问题,程序执行的时候后置通知和最终通知的执行顺序上会与我们所期望的不同,所以使用注解方式需谨慎。环绕通知由于是自己编写的代码,所以不会有顺序错误==
@Pointcut(“execution()”):
标注在某个方法上,指定切入点表达式,随后在通知的标签里加上"此方法()",表明使用此表达式
例子:
@Pointcut(“execution(* *…*.*(…))”)
public void pt(){}
@Before(“pt()”)