@RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
        @Bean
        @ConditionalOnMissingBean(name = "jdbcPasswordChangeService")
        public PasswordManagementService passwordChangeService(
            final CasConfigurationProperties casProperties,
            final ConfigurableApplicationContext applicationContext,
            @Qualifier("jdbcPasswordManagementDataSource")
            final DataSource jdbcPasswordManagementDataSource,
            @Qualifier("jdbcPasswordManagementTransactionTemplate")
            final TransactionOperations jdbcPasswordManagementTransactionTemplate,
            @Qualifier("passwordManagementCipherExecutor")
            final CipherExecutor passwordManagementCipherExecutor,
            @Qualifier(PasswordHistoryService.BEAN_NAME)
            final PasswordHistoryService passwordHistoryService) {
            val encoder = PasswordEncoderUtils.newPasswordEncoder(
                casProperties.getAuthn().getPm().getJdbc().getPasswordEncoder(), applicationContext);
            return new JdbcPasswordManagementService(passwordManagementCipherExecutor,
                casProperties, jdbcPasswordManagementDataSource,
                jdbcPasswordManagementTransactionTemplate, passwordHistoryService, encoder);
        }
This is {@link JdbcPasswordManagementConfiguration}.

@author Misagh Moayyed
@since 5.2.0
support/cas-server-support-pm-jdbc/src/main/java/org/apereo/cas/config/JdbcPasswordManagementConfiguration.java