@RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
        @Bean
        @ConditionalOnMissingBean(name = "personDirectoryAttributeRepositoryPrincipalResolver")
        public PrincipalResolver personDirectoryAttributeRepositoryPrincipalResolver(
            @Qualifier(AttributeRepositoryResolver.BEAN_NAME)
            final AttributeRepositoryResolver attributeRepositoryResolver,
            final ConfigurableApplicationContext applicationContext,
            @Qualifier(AttributeDefinitionStore.BEAN_NAME)
            final AttributeDefinitionStore attributeDefinitionStore,
            @Qualifier(ServicesManager.BEAN_NAME)
            final ServicesManager servicesManager,
            @Qualifier("attributeRepositoryAttributeMerger")
            final AttributeMerger attributeRepositoryAttributeMerger,
            final CasConfigurationProperties casProperties,
            @Qualifier("personDirectoryPrincipalFactory")
            final PrincipalFactory personDirectoryPrincipalFactory,
            @Qualifier(PrincipalResolver.BEAN_NAME_ATTRIBUTE_REPOSITORY)
            final PersonAttributeDao attributeRepository) {
            val personDirectory = casProperties.getPersonDirectory();
            return PersonDirectoryPrincipalResolver.newPersonDirectoryPrincipalResolver(
                applicationContext, personDirectoryPrincipalFactory,
                attributeRepository, attributeRepositoryAttributeMerger,
                servicesManager, attributeDefinitionStore, attributeRepositoryResolver, personDirectory);
        }
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