• [Spring Framework]学习笔记--@Component等stereotype的基础


    在继续讲解Spring MVC之前,需要说一下常用的几个用来标记stereotype的annotation。

    @Component,@Controller,@Repository,@Service。

    这四个都在org.springframework.stereotype包下面,后面3个都属于@Component。

    可以理解为@Component是@Controller,@Repository,@Service的基类。

    @Component是用来标记任何被Spring管理的组件。

    @Controller用来标记presentation层(比如web controller)。

    @Repository用来标记persistence层(比如DAO)。

    @Service用来标记service层。

    如果我们为自己class增加了这些annotation后,如果让Spring自动找到这些class,并实现注册呢?

    需要在Spring的xml中用到<context:component-scan>元素, base-package是要扫描的包名。

    <beans
        ...
        xmlns:context="http://www.springframework.org/schema/context"
        ...>
        <context:component-scan base-package="xxx.xxx"/>
    </beans>

    <context:component-scan>的使用,是默认激活<context:annotation-config>功能的。而<context:annotation-config>又是干啥的呢?

    主要是为@Autowired服务的(换句话就是说,使Spring可以处理像@Autowired和@Configuration这样的annotations),试想一下,如果没有<context:annotation-config>, 我们需要在Spring的XML文件中去注册每一个bean,

    导致整个XML文件非常大,而且难以维护。现在用一行,就可以来实现注册,简单方便。

    注意1:如果有了<context:component-scan>, 我们是不需要显式的来定义<context:annotation-config>的。

    注意2:<context:annotation-config>只搜索在同一个application context下的被annotation标记的beans。

    举个例子,就是如果<context:annotation-config>加在WebApplicationContext下,它只检查在controller中被标记为Autowired的beans,不会检查service中的。

  • 相关阅读:
    Win7操作系统防火墙无法关闭的问题 无法找到防火墙关闭的地方的解决的方法
    【微信】微信获取TOKEN,以及储存TOKEN方法,Spring quartz让Token永只是期
    OC内存管理总结,清晰明了!
    下次自己主动登录(记住password)功能
    linux删除svn版本号库
    Python中可避免读写乱码的一个强慷慨法
    Tomcat源代码阅读#1:classloader初始化
    iOS关于图片点到像素转换之杂谈
    hdu 3804树链剖分+离线操作
    cdn缓存
  • 原文地址:https://www.cnblogs.com/lemonbar/p/3904542.html
Copyright © 2020-2023  润新知