Bean 名称生成规则
在 Spring 框架中,Bean 的名称决定了我们在容器中如何获取它。理解命名规则是避免冲突的关键。
类注解生成的 Bean 名称
当使用 @Component、@Service 等注解时,Spring 会根据类名自动生成 Bean 名称:
- 情况 1:类名前两个字母都是大写 → Bean 名称直接等于类名本身。
- 例:
class HTTPClient {}→ Bean 名称为HTTPClient
- 例:
- 情况 2:其他情况 → Bean 名称是类名的小驼峰写法(首字母小写)。
- 例:
class UserService {}→ Bean 名称为userService
- 例:
@Bean 注解的 Bean 名称
在配置类中使用 @Bean 标注方法时,Bean 名称直接等于方法名。
@Bean
public UserService userService() {
return new UserService();
}
此时 Bean 名称即为 userService。
如果想自定义 Bean 名称,可以直接在注解中指定:
@Bean(name = "myOrderDao")
public OrderDao orderDao() { return new OrderDao(); }
或者简写为:
@Bean("u1")
public User user1(){
User user = new User();
user.setName("zhangsan");
user.setAge(18);
return user;
}
这样既可以通过 user1 也可以通过 u1 获取对象。
定义多个同类型对象
同一个类可以定义多个对象,常见于多数据源场景。但要注意,如果通过类型获取,Spring 会报错提示存在多个匹配项。


