@Bean
        @RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
        @ConditionalOnMissingBean(name = "casCommonMessages")
        public PropertiesFactoryBean casCommonMessages(final CasConfigurationProperties casProperties) {
            val properties = new PropertiesFactoryBean();
            val resourceLoader = new DefaultResourceLoader();
            val commonNames = casProperties.getMessageBundle().getCommonNames();

            val resourceList = commonNames
                .stream()
                .map(resourceLoader::getResource)
                .collect(Collectors.toList());
            resourceList.add(resourceLoader.getResource("classpath:/cas_common_messages.properties"));
            properties.setLocations(resourceList.toArray(Resource[]::new));
            properties.setSingleton(true);
            properties.setIgnoreResourceNotFound(true);
            return properties;
        }
Load property files containing non-i18n fallback values
that should be exposed to Thyme templates.
keys in properties files added last will take precedence over the
internal cas_common_messages.properties.
Keys in regular messages bundles will override any of the common messages.

@param casProperties the cas properties
@return PropertiesFactoryBean containing all common (non-i18n) messages
core/cas-server-core-web/src/main/java/org/apereo/cas/config/CasCoreWebConfiguration.java