Spring和SpringMVC的常用注解

Spring和SpringMVC中常用的注解有哪些

1.Spring和SpingMVC的关系

  • 我们都知道Spring和SpringMVC是父子容器。同时也知道,父容器的对象可以被子容器访问,但是子容器的对象不能被父容器访问。Spring和SpringMVC的常用注解

上图中显示了2个WebApplicationContext实例,为了进行区分,分别称之为:Servlet WebApplicationContext、Root WebApplicationContext。 其中:
(1)、Servlet WebApplicationContext:这是对J2EE三层架构中的web层进行配置,如控制器(controller)、视图解析器(view resolvers)等相关的bean。通过Spring MVC 中提供的DispatchServlet来加载配置,通常情况下,配置文件的名称为spring-servlet.xml。
(2)、Root WebApplicationContext:这是对J2EE三层架构中的service层、dao层进行配置,如业务bean,数据源(DataSource)等。通常情况下,配置文件的名称为applicationContext.xml。在web应用中,其一般通过ContextLoaderListener来加载。

  • 那为什么我们在开发中,通常直接可以用用注解@Service、@Controller、@Autowired注入的对象就可以自动识别与注入成功呢?

(1)、<context:component-scan base-package=“com." /> – 在xml阶段我们通过这样的方式,让Spring和SpringMVC知道包扫描的范围。
(2)、 @SpringBootApplication(scanBasePackages="com.
”) --在Sring boot中通过这样的方式来指定包扫描的范围。(boot中默认扫描的入口类所在包及其子包)

2.Spring的常用注解

  • @Controller:用于标注控制层组件(如struts中的action)
  • @Component:标注一个普通的Spring Bean类。
  • @Repository:标注一个dao持久层组件类。
  • @Service:标注一个业务层组件类。
  • @Resource:有name和type两个属性,默认按照name注入
  • @Autowired:默认按照类型注入,如果要按照名称注入,则搭配@Qualifier使用。

3.SpringMVC的常用注

  • @Controller

被@Controller注解的类仅仅是个控制层组件,DispatcherServlet分发器通过扫描该类中用@RequestMapping 注解的方法,实现真正的业务逻辑处理。

  • @RequestMapping

该注解可以加在类和方法上,加在类上表示一级目录,方法上表示二级目录。@RequestMapping的作用是建立请求URL和处理方法之间的对应关系。
其有如下属性
path 指定请求路径的URL
value 属性和path属性是一样的
mthod 指定该方法的请求方式
params 指定限制请求参数的条件
headers 发送的请求中必须包含的请求头

  • @requestParam

用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。(Http协议中,如果不指定Content-Type,则默认传递的参数就是application/x-www-form-urlencoded类型)
@RequestParam可以接受简单类型的属性,也可以接受对象类型。实质是将Request.getParameter() 中的Key-Value参数Map利用Spring的转化机制ConversionService配置,转化成参数接收对象或字段。

  • @ResponseBody

处理HttpEntity传递过来的数据,一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据。

  • @Repository

用于将Controller的方法返回的对象,通过springmvc提供的HttpMessageConverter接口转换为指定格式的数据如:json、xml等,通过Response响应给客户端。

参考博客
[1] https://blog.****.net/weixin_39805338/article/details/80770472
[2] http://www.tianshouzhi.com/api/tutorials/spring