• Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.10.6 给自动检测组件命名


    6.10.6 给自动检测组件命名

    当组件作为扫描过程的一部分自动检测时,其bean名称由该扫描程序已知的BeanNameGenerator策略生成。默认情况下,任何包含名称值的Spring构造型注@ Component@ Repository@ Service@Controller)都将该名称提供给相应的bean定义。

    如果此类注不包含名称值或对于任何其他检测到的组件(例如通过自定义过滤器发现的那些组件),则默认的bean名称生成器将返回小写的非限定类名称。例如,如果以下两个组件被检测到,则名称为myMovieListermovieFinderImpl

    @Service("myMovieLister")
    public class SimpleMovieLister {
        // ...
    }
    @Repository
    public class MovieFinderImpl implements MovieFinder {
        // ...
    }

    如果您不想依赖默认的bean命名策略,则可以提供自定义bean命名策略。首先,实现BeanNameGenerator接口,并确保包含默认的无参数构造函数。然后,在配置扫描程序时提供完全限定的类名:

    @Configuration
    @ComponentScan(basePackages = "org.example", nameGenerator = MyNameGenerator.class)
    public class AppConfig {
        ...
    }
    <beans>
        <context:component-scan base-package="org.example"
            name-generator="org.example.MyNameGenerator" />
    </beans>

    作为一般规则,使用注指定名称,不管在什么时候,其他组件也可以生成对它的明确的引用。另一方面,不管什么时候,容器都会负责连接,自动生成的名称就能够胜任了

  • 相关阅读:
    数据库系列之T-SQL(系统内置函数)
    数据库系列之T-SQL(存储过程)
    数据库系列之T-SQL(作业与维护计划)
    数据库系列之T-SQL(触发器)
    数据库系列之T-SQL(事务)
    数据库系列之T-SQL(基础)
    数据库系列之查询(5)
    Nginx + Apache 公用80端口的配置
    客户端putty, xshell连接linux中vim的小键盘问题
    配置EPEL YUM源
  • 原文地址:https://www.cnblogs.com/springmorning/p/10457874.html
Copyright © 2020-2023  润新知