@Override
    public void initialize(Map<String, Object> config) {
        String dataSourceClassName = (String) config.get(CONFIG_DATASOURCE_FQCN);
        boolean dataSourceClassNameRequired = dataSourceClassName == null;
        if ( dataSourceClassNameRequired ) {
            throw new TrnDataAccessException("データソースのFQCNが指定されていません: キー=" + CONFIG_DATASOURCE_FQCN);
        }

        Map<String, String> dataSourceProperties = CollectionUtil.filterByKey(config, new Predicate<String>() {
            @Override
            public boolean evaluate(String s) {
                return s.startsWith(CONFIG_DATASOURCE_PROPERTIES);
            }
        });

       this.dataSource = ClassUtil.createInstance(dataSourceClassName);
        for ( String key : dataSourceProperties.keySet() ) {
            String setter = key.substring(CONFIG_DATASOURCE_PROPERTIES.length());
            ClassUtil.setProperty(dataSource, setter, dataSourceProperties.get(key));
        }

        initialized = true;
    }