1.概述当有多个相同类型的实现时命名一个Spring bean非常有用。这是因为 bean 没有唯一的名称那么注入 bean 对 Spring 来说是不明确的。通过控制 bean 的命名可以告诉 Spring 要将哪个 bean 注入目标对象。2.默认 Bean 命名策略Spring为创建 bean提供了多个注解可以在不同的层次上使用这些注解。例如可以在 bean 类上放置一些注解而在创建 bean 的方法上放置一些注解。首先来看 Spring 的默认命名策略在。当只指定注解而没有任何值时Spring 如何命名 bean2.1.类级注释从在类级别使用的注解默认命名策略开始。为了命名一个 beanSpring 使用类名并将第一个字母转换为小写。来看一个例子Service public class LoggingService { }在这里Spring 为类_LoggingService_创建一个 bean并使用名称“loggingService”注册它。同样的默认命名策略适用于所有用于创建 Spring bean 的类级别注解例如*Component*、_Service_和*Controller*。2.2. 方法级注解Spring 提供了*Bean_和_Qualifier*类的注解用于创建 bean 的方法。看一个例子来理解*Bean*注解的默认命名策略Configuration public class AuditConfiguration { Bean public AuditService audit() { return new AuditService(); } }在这个配置类中Spring在名称“audit ”下注册了一个**AuditService类型的 bean当在方法上使用Bean注解时Spring 使用方法名称作为 bean 名称。还可以在方法上使用*Qualifier*注解3. bean的自定义命名当需要在同一个 Spring 上下文中创建多个相同类型的 bean 时可以为这些 bean 提供自定义名称并使用这些名称来引用它们。下面例子 如何给 Spring bean 一个自定义名称Component(myBean) public class MyCustomComponent { }这一次Spring 将创建名为“ myBean”的MyCustomComponent类型的 bean 。由于明确地为 bean 命名Spring 将使用这个名称然后可以使用它来引用或访问 bean。与*Component(“myBean”)类似可以使用*Service(“myService”)、Controller(“myController”)和Bean(“myCustomBean”)等其他注解来指定名称然后Spring 会注册具有给定名称的 bean。