Currently our configtree:/... import support will create a flattened structure by replacing / with .. For example, configtree:/etc/config for the following:

etc/
  config/
    db/
       password
    mq/
       password

Would add a db.password and mq.password properties.

This works well to prevent name clashes, but might be a problem if a user prefer to only use the filenames as properties. For example:

etc/
  config/
    mydbservice/
       spring.datasource.password
    mymqservice/
       spring.mq.password

We should look at options that will help with the second case.

Comment From: philwebb

It strikes me that this is quite similar to the wildcard support that we already have for spring.config.location. Perhaps rather than adding an option to ConfigTreePropertySource we should instead add wildcard support so that multiple folders can be added quickly.

I.e., given

etc/
  config/
    mydbservice/
       spring.datasource.password
    mymqservice/
       spring.mq.password

You could so spring.config.import=configtree:/etc/config/* and get two property sources. One for mydbservice containing spring.datasource.password and one for mymqservice containing spring.mq.password.

Comment From: mbhave

Adding the restrictions we have in place for the wildcard support so that we can consider the same ones for the config tree.

  1. The location cannot contain multiple wildcards.
  2. The wildcard must be at the end of the path.
  3. Locations with wildcard directories are restricted to one-level deep.
  4. Locations with wildcard directories are sorted alphabetically.