注解:说明程序的。给计算机看的。
注释:用文字描述程序的。给程序员看的。 定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。 概念描述: * JDK1.5之后的新特性 * 说明程序的 * 使用注解:@注解名称
spring对某个目录下的所有类进行扫描,发现spring注解则直接实例化到内存中。没有注解,证明是一个普通bean,有注解证明是spring管理的bean。
由于启动项目时,spring扫包时已经把所以注解的bean都实例化到内存中了。程序运行时的依赖注入是发现需要依赖的bean,然后从内存中找到这个bean。
1.@Controller作用: 告诉springmvc的dispatcherServlet(请求分发Servlet)这是一个Controller然后被dispatcherServlet的上下文所管理,并且完成它的依赖注入。
2. @Service作用:这个注解常用于标注业务层组件。
3. @Autowired作用:它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作 @Autoware默认按类型匹配注入Bean required属性:如果希望Spring即使找不到匹配的Bean完成注入也不要抛出异常,那么可以使用@Autoware(required=false)进行标注。
4. @RequestMapping作用:@RequestMapping 标记在Controller 类上的时候,里面使用@RequestMapping 标记的方法的请求地址都是相对于类上的@RequestMapping 而言的;当Controller 类上没有标记@RequestMapping 注解时,方法上的@RequestMapping 都是绝对路径。这种绝对路径和相对路径所组合成的最终路径都是相对于根路径“/ ”而言的。
5.@RequestParam、@PathVariable作用:两者的作用都是将request里的参数的值绑定到contorl里的方法参数里的,区别在于,url不同 (1)@PathVariable的url是这样的:http://host:port/.../path/参数值
@RequestMapping("/bookings/{booking}")
public String getBooking(@PathVariable Long booking) {
}
(2)@RequestParam的url是这样的:http://host:port/.../path?参数名=参数值
@RequestMapping(method = RequestMethod.GET)
public String setupForm(@RequestParam("petId") int petId, ModelMap model) {
Pet pet = this.clinic.loadPet(petId);
model.addAttribute("pet", pet);
return "petForm";
}
6.@Cacheable
作用:基本思想是在方法加上@Cacheable注解,这个方法的返回值将具有缓存特性。 @Cacheable注解可以用在方法或者类级别。当他应用于方法级别的时候,就是如上所说的缓存返回值了。 (1)当应用在类级别的时候,这个类的所有方法的返回值都将被缓存。 (2)@Cacheable注解有三个参数,value是必须的,还有key和condition。第一个参数,也就是value指明了缓存将被存到什么地方。 (3)任何存储在缓存中的数据为了高速访问都需要一个key。Spring默认使用被@Cacheable 注解的方法的签名来作为key,当然你可以重写key,自定义key可以使用SpEL表达式。 (4) @Cacheable的最后一个参数是condition(可选),同样的,也是引用一个SpEL表达式。但是这个参数将指明方法的返回结果是否被缓存。
7.@Resource(确切的说是@Resource注解是由J2EE提供)作用:@Resource要求提供一个Bean名称的属性(name),如果属性为空,则自动采用标注处的变量名或方法名作为Bean的名称。 @resource注解就是把一个bean注入到当前的类中,可以不必通过配置文件或者导包的方式注入就可以使用该bean,默认是ByName的方式注入,如: @resource(name=“personDaoBean”) private personDaoBean personDaobean; 这样就可以直接使用personDaoBean这个Bean,以及其setter和getter方法。
8. @ResponseBody作用:该注解用于将Controller的方法返回的对象,根据HTTP Request Header的Accept的内容,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。 使用时机:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用。配置返回JSON和XML数据
9.@Component作用: @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。(把普通pojo实例化到spring容器中,相当于配置文件中的)
10. @Scope作用: @scope 就是用来配置 spring bean 的作用域,它标识 bean 的作用域。 @Scope 简单点说就是用来指定bean的作用域 scope用来声明IOC容器中的对象应该处的限定场景或者说该对象的存活空间,即在IOC容器在对象进入相应的scope之前,生成并装配这些对象,在该对象不再处于这些scope的限定之后,容器通常会销毁这些对象。
11.@Required作用:Spring 配置文件中 dependency-check 依赖检查的灵活性不够,并不能满足我们所有的需求 Spring还提供一种更加灵活的检查方式 注意:@required只能注设置到setter方法上面
12.@Qualifier作用:我们知道,@Autowired默认是按照类型装配注入的,如果想按照名称来转配注入,则需要结合@Qualifier一起使用 @Autowired通过此注解完成从spring配置文件中 查找满足studentDao类型的bean @Qualifier("studentDao")则按照名称经行来查找转配的
13.@Repository作用:它用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean。具体只需将该注解标注在 DAO类上即可。 同时,为了让 Spring能够扫描类路径中的类并识别出 @Repository 注解,需要在 XML 配置文件中启用Bean 的自动扫描功能,这也可以通过实现。