Spring bean 在容器中的key 生成策略

bean在容器中都有唯一的key,而这个key 就是自动装配的核心,那这个key 如何自定义呢?

代码实现

key 的生成策略 是通过 BeanNameGenerator 接口来实现的

  • 实现 BeanNameGenerator

    public class SimpleNameGenerator implements BeanNameGenerator {
    	@Override
    	public String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) {
    		return definition.getBeanClassName();
    	}
    }
    

    上面我们是通过把 bean 的class_name 作为key,例如我们在 com.pangugle 下面有一个类叫User, 那么这个key就为 com.pangugle.User

  • 应用这个 SimpleNameGenerator

    @SpringBootApplication
    @ComponentScan(basePackages = {
    		"com.pangugle"
    }, nameGenerator = SimpleNameGenerator.class)
    public class App
    {
        public static void main( String[] args )
        {
        	SpringApplication.run(App.class, args);
        }
    }
    

    它是在 @ComponentScan 下面的 nameGenerator 配置生效的!