主要参考的资料:http://blog.csdn.net/ye1992/article/details/19972041
http://blog.csdn.net/ye1992/article/details/19971467
@Repository注解便属于最先引入的一批,它用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean。@Repository 只能标注在 DAO 类原因:Spring本身提供了一个丰富的并且是与具体的数据访问技术无关的数据访问异常结构,用于封装不同的持久层框架抛出的异常,使得异常独立于底层的框架。
Spring2.5之后增加了三个@Component、@Service、@Constroller。
@Component 是一个泛化的概念,仅仅表示一个组件 (Bean) ,可以作用在任何层次。例子@Component("boss")。
@Service 通常作用在业务层,但是目前该功能与 @Component 相同。
@Constroller 通常作用在控制层,但是目前该功能与 @Component 相同。
@Autowired,对成员变量使用,可以将它们的 setter 方法从类中删除。
@Autowired
可以对成员变量、方法以及构造函数进行注释。自动注入的策略是根据变量的类型,也就是byType 。此时Spring 容器中匹配的候选 Bean 数目必须有且仅有一个,否则Spring 容器将抛BeanCreationException 异常。在开发期或测试期(如为了快速启动 Spring 容器,仅引入一些模块的 Spring 配置文件),可以用@Autowired(required = false)
,在找不到匹配 Bean 时也不报错。和找不到一个类型匹配 Bean 相反的一个错误是:如果 Spring 容器中拥有多个候选 Bean,Spring 容器在启动时也会抛出 BeanCreationException
异常。通过在XML中配置AutowiredAnnotationBeanPostProcessor
,它将扫描 Spring 容器中所有 Bean,当发现 Bean 中拥有@Autowired
注释时就找到和其匹配(默认按类型匹配)的 Bean,并注入到对应的地方中去。
@Qualifier("office")
中的 office
是 Bean 的名称,所以 @Autowired和
@Qualifier
结合使用时,转变成 byName 了。
,而@Qualifier
的标注对象是成员变量、方法入参、构造函数入参。
@RequestParam注解可以用来提取名为“number”的String类型的参数,并将之作为输入参数传入。 例如public void show(@RequestParam("number") String number, Map<String, Object> model) { }。属性required=false或者true可以用来要求@RequestParam配置的前端参数是否一定要传给后台 。
@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
value:
method:
@Scope,它能够配合这四个注解在标注 Bean 的同时能够指定 Bean 的作用域。与通过 XML 配置的 Spring Bean 一样,通过上述注解标识的Bean,其默认作用域是"singleton"。使用该注解时只需提供作用域的名称就可以了。例如:
@Scope("prototype") @Repository public class Demo { … }
当一个 Bean 被自动检测到时,会根据那个扫描器的 BeanNameGenerator 策略生成它的Bean名称。默认情况下,对于使用了 name 属性的 注解,会把 name 值作为 Bean 的名字。如果这个注解不使用 name属性或是其他被自定义过滤器发现的组件,默认 Bean 名称会是小写开头的非限定类名。