Spring源码分析之AliasRegistry(1)

AliasRegistry顾名思义为别名注册表,就是存储别名的地方,首先看一下别名的使用

别名的使用

public class UserService {

  public void userList() {
    System.out.println("userList");
  }
}

UserService是一个简单的JavaBean,

@Configuration
public class BeanConfig {

  @Bean({"userService", "userService1", "userService2", "userService3"})
  public UserService userService() {
    return new UserService();
  }
}

我们使用JavaConfig来配置一个Bean,如果没有配置name,spring就会取方法名作为name,如果配置了,取第一个值,剩余的会当做别名处理

这是spring对Bean注解的处理。

public class Client {
  public static void main(String[] args) {
    ApplicationContext context = new AnnotationConfigApplicationContext(BeanConfig.class);
    UserService userService = context.getBean(UserService.class);
    userService.userList();
    System.out.println("==========");
    String[] contextAliases = context.getAliases("userService");
    for (String contextAlias : contextAliases) {
      System.out.println(contextAlias);
    }
  }
}

输出结果为

userList
==========
userService3
userService2
userService1

spring会将userService当做bean的name,将userService1,userService2,userService3当做bean的别名

posted @ 2020-10-08 17:26  strongmore  阅读(173)  评论(0编辑  收藏  举报