在开发中,遇到大的项目,通常会有很多的组件,如果这些组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找以及维护起来也不太方便。 Spring2.5为我们引入了组件自动扫描机制,他可以在类路径底下寻找标注了@Component,@Service,@Controller,@Repository注解的类,并把这些类纳入进spring容器中管理。它的作用和在xml文件中使用bean节点配置组件时一样的。
注解:
自动扫描:<context:component-scan base-package=”com.***.spring”>(包名)
@Autowired :
这个注解就是spring可以自动帮你把bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get。
@Controller 用于标注控制层组件(如struts中的action);
@Repository 持久层组件,用于标注数据访问组件,即DAO组件;
@Component 泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注;
@JoinColumn: @OneToOne注释只能确定实体与实体的关系是一对一的关系,不能指定数据库表中的保存的关联字段。所以此时要结合@JoinColumn 标记来指定保存实体关系的配置
@Transient: 表示该属性并非一个到数据库里的映射,ORM框架将忽略该属性
@Autowired 和@Qualifier
这个注解就是spring可以自动帮你把bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get。在service类中声明即可(如:
@Autowired
private IUserDao userdao;
@Qualifier("XXX") 中的 XX是 Bean 的名称,所以@Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变成 byName 了。
@Autowired 可以对成员变量、方法以及构造函数进行注释,而@Qualifier 的标注对象是成员变量、方法入参、构造函数入参。如:
@Autowired
@Qualifier("supportAuthService")
privateISupportAuthService supportAuthService@ModelAttribute 被@ModelAttribute注释的方法会在此controller每个方法执行前被执行,因此对于一个controller映射多个URL的用法来说,要谨慎使用
@RequestMapping
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中所有响应请求的方法都是以该地址作为父路径。
属性:
value:指定请求的实际地址,指定的地址可以是URI Template模式;
method 指定请求的method类型(GET,POST,PUT,DELETE);
consumes指定处理请求的提交内容类型(Content-Type),如:application/json,text/html;
produces指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
param指定request中必须包含某些参数值是,才让该方法处理;
headers指定request中必须包含某些指定的header值,才能让该方法处理请求@ResponseBody 在SpringMVC中可以在Controller的某个方法上加@ResponseBody注解,表示该方法的返回结果直接写入HTTP response body中