SpringMVC 基本注解[@Resource,@Autowired,@Component]

使用spring注解@Autowired,@Component须要先配置schema:java

xmlns:context="http://www.springframework.org/schema/context" 
xsi:schemaLocation="http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-2.5.xsd"

显式的配置<context:annotation-config/> spring

该配置隐式注册了多个对注解进行解析的处理器,例如:ui

    AutowiredAnnotationBeanPostProcessor
    CommonAnnotationBeanPostProcessor 
    PersistenceAnnotationBeanPostProcessor
    RequiredAnnotationBeanPostProcessor

 

另外:比较建议使用@Resource ,而不是@Autowired注解,由于Autowired是spring提供的,而Resource是J2EE提供的spa

@Resource注解说明:.net

    @Resource和@Autowired同样,也能够标注在字段或属性的setter方法上
code

    @Resource默认是按照名称装配,名称能够根据name属性来指定。当找不到与名称匹配的bean时,才会按类型装配
component

        若注解标注在字段上,且未指定name属性,则默认取字段名做为bean名称,寻找依赖对象
orm

        若注解标注在setter上且未指定name属性,则默认取属性名做为bean名称寻找依赖对象
xml

        若是没有指定name属性,而且按照默认的名称仍然找不到依赖对象时,它就会按照类型匹配,但只要指定了name属性,就只能按照名称匹配了对象


@Autowired注解说明:

    @Autowired默认按照类型装配对象的,默认状况下它要求依赖对象必须存在

        若是容许null值,能够设置它的required属性为false,如@Autowired(required=false)

        若想要按照名称装配,能够结合@Qualifier注解一块儿使用,如:

            @Autowired(required=false)

            @Qualifier("personDaoBean")


在spring 2.5以上,咱们引入组件自动扫描机制,它能够在classpath下寻找标注了@Service,@Repository,@Autowired,@Component注解的类,并把他们放入到spring的容器中管理,他的做用和在xml中使用bean节点配置组件同样,


使用自动扫描机制,须要配置<context:component-scan base-package="com.jadyer"/> ,启动自动扫描其中base-package指定须要扫描的包,它会扫描指定包中的类和子包里面类 

@Service用于标注业务层组件 
@Repository用于标注数据访问组件,即DAO组件 
@Controller用于标注控制层组件,如Struts中的Action 
@Component泛指组件,当组件不要好归类时,能够使用这个注解进行标注 

相关文章
相关标签/搜索