@ConditionalOnMissingBean(name = PersonDirectoryAttributeRepositoryPlan.BEAN_NAME)
        @Bean
        @RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
        public PersonDirectoryAttributeRepositoryPlan personDirectoryAttributeRepositoryPlan(
            final List<PersonDirectoryAttributeRepositoryPlanConfigurer> configurers,
            final ObjectProvider<List<PersonDirectoryAttributeRepositoryCustomizer>> customizers) {
            val plan = new DefaultPersonDirectoryAttributeRepositoryPlan(
                Optional.ofNullable(customizers.getIfAvailable()).orElseGet(ArrayList::new));
            configurers.forEach(cfg -> cfg.configureAttributeRepositoryPlan(plan));
            AnnotationAwareOrderComparator.sort(plan.getAttributeRepositories());
            LOGGER.trace("Final list of attribute repositories is [{}]", plan.getAttributeRepositories());
            return plan;
        }
This is {@link CasPersonDirectoryConfiguration}.

@author Misagh Moayyed
@since 5.0.0
support/cas-server-support-person-directory/src/main/java/org/apereo/cas/config/CasPersonDirectoryConfiguration.java