19.5 Property Placeholder Configuration 3.2.6

(Quick Reference) # 19.5 Property Placeholder Configuration Version: 3.2.6 ## 19.5 Property Placeholder Configuration Grails supports the notion of property placeholder configuration through an extended version of Spring’s PropertyPlaceholderConfigurer. Settings defined in either hhttp://docs.groovy-lang.org/latest/html/gapi/groovy/util/ConfigSlurper.html[ConfigSlurper] scripts or Java properties files can be used as placeholder values for Spring configuration in `grails-app/conf/spring/resources.xml` and `grails-app/conf/spring/resources.groovy`. For example given the following entries in `grails-app/conf/application.groovy` (or an externalized config):
    database.driver="com.mysql.jdbc.Driver"
    database.dbname="mysql:mydb"
You can then specify placeholders in `resources.xml` as follows using the familiar ${..} syntax:
    <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName">
            <value>${database.driver}</value>
        </property>
        <property name="url">
            <value>jdbc:${database.dbname}</value>
        </property>
     </bean>
To specify placeholders in `resources.groovy` you need to use single quotes:
    dataSource(org.springframework.jdbc.datasource.DriverManagerDataSource) {
        driverClassName = '${database.driver}'
        url = 'jdbc:${database.dbname}'
    }
This sets the property value to a literal string which is later resolved against the config by Spring’s PropertyPlaceholderConfigurer. A better option for `resources.groovy` is to access properties through the `grailsApplication` variable:
    dataSource(org.springframework.jdbc.datasource.DriverManagerDataSource) {
        driverClassName = grailsApplication.config.database.driver
        url = "jdbc\:${grailsApplication.config.database.dbname}"
    }
Using this approach will keep the types as defined in your config. | Quick Reference (hide)