springmvc注解

来源:互联网 发布:知网查重入口 知乎 编辑:程序博客网 时间:2024/06/06 08:57
一、@controller
   用来表示一个web控制层bean,用来前后端的交互!类似struts的action或servlet


二、@service
  用来表示一个业务层bean


三、@repository
  用来表示一个持久层bean,即数据访问层dao组件。


四、@component

  用来表示一个平常的普通组件,当一个类不合适用以上的注解定义时用这个组件修饰。


需要注意的是@controller,@service,@repository都带有@component父注解,说明他们出来基本组件的属性外还有其他的场景应用,即如果不要springmvc其实他们就是一个普通的组件,但普通组件建议最好还是用@component修饰。

为了让spring字段扫描注册这些组件,需要在配置文件中加上扫描的配置,如扫描com.test下的注解:

<context:component-scan base-package="com.test" />

扫描配置默认use-default-filters="true",默认扫描@component注解即子注解,可以配置过滤只扫描哪些注解不扫描哪些注解。

要过滤扫描注解,只需相应的带上下面的子标签,可以有多个

<context:include-filter>

<context:exclude-filter>


如只扫描com.text包下的@controller和@service注解的组件

<context:component-scan base-package="com.test"  use-default-filters="false">

<context:include-filter   type="annotation" expression="org.springframework.stereotype.Controller"   />

<context:include-filter   type="annotation" expression="org.springframework.stereotype.Service"   />

</context:component-scan>

关于type的定义


另外,<context:component-scan>配置可以有多个



@Resource,@Autowire的,@Injectz这3中都是用来注入bean的,他们属于不同的程序中。

一 、@Resource

  他有两个关键的属性:name-名称,type-类型

  1、如果指定了name,type,则从Spring容器中招一个名称和类型相应的一个bean,找不到则报错。

  2、如果只指定了name,则从spring容器中找一个名称和name一样的bean,找不到则报错。

  3、如果只指定了type,则从spring容器中找类型和type一样的bean,找不到就报错。

  4、如果没有指定参数,则默认找字段名称装配,找不到则按类型,还找不到就报错。

二、@Autowire

默认按类型装配,找不到或者找到多个则报错。

如果要按名称装配,需要结合spring另外一个注解Qualifier(“name”)使用。

三、@Injectz

和@Autowire类似,可以完全代替@Autowire,但这个没有required属性,要求bean必须存在。