一、Spring常用注解:
目的:使用注解来构造IOC容器
用注解来向Spring容器注册Bean。需要在applicationContext.xml中注册
1、@Compoent
是所有受Spring管理组件的通用形式,@Component注解可以放在类的上边
2、 @Contrpller
对应表现层的Bean,也就是Action
3、@sevice
对应的是业务层Bean
4、@Repositoty
对应数据库访问层Bean
二、Spring MVC常用注解
1、@Controller
用于标记在一个类上,使用它标记的类就是Spring MVC Controller对象,只是定义了一个控制器类,而使用@RequestMapping注解的方法才是真正处理请求的处理器@RequestMapping RequestMapping注解有六个属性:
-
value:指定请求的实际地址,指定的地址可以是URL Template类型value,method
-
method:指定请求的method类型,GET、POST等 consumes,producesconsumes:指定处理请求的提交内容类型,例如:jsp、html等produces:指定返回的内容类型,仅当request请求头中的类型包含该指定类型才返回params,
-
headers :指定request中必须包含某些参数值时,才让方法处理headers
-
params:指定request中必须包含某些指定的header值,才能让该方法处理请求
-
consumes:指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
-
produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
2、@Resource和@Autowired
@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,只是Spring支持该注解的注入
(1)共同点:
两者都可以写在字段和setter方法上。两者都写在字段上,那么就不需要再写setter方法
(2)不同点:
@Autowired为Spring提供的注解,需要导入包,只按照一定的格式去注入即可,@Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的 required属性为false。如果我们想使用按照名称(byName)来装配
@Resource默认按照ByName自动注入,由J2EE提供,需要导入包javax.annotation.Resource。@Resource 有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的 类型。所以,如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不制定name也不 制定type属性,这时将通过反射机制使用byName自动注入策略。
3、@ResponseBody
作用:该注解用于将Controller的方法返回的对象,通过适当的httpMessageConverter转换为指定格式后,写入到Response对象的body数据区