Skip to content

@Configuration(prefix = "aabb") (or: how to create reusable configurations) [SPR-14103] #18675

Closed as not planned
@spring-projects-issues

Description

@spring-projects-issues

Stepan Koltsov opened SPR-14103 and commented

Requesting a

@Configuration(prefix = "aabb-")

attribute. When prefix is specified, it is prepended to names of all beans defined in that @Configuration.

Why is it important: to create reusable configurations. For example, one might have database connection component which comprises of: DataSource, DataSourceMonitoring, ThreadPool etc.

It could be written like this:

abstract class DbContextTemplate {
    abstract String dbHost();
  
    @Bean DataSource dataSource() {
        return new DataSourceImpl(dbHost);
    }

    @Bean DataSourceMonitoring dataSourceMonitoring() {
        return new DataSourceMonitoring(dataSource());
    }

    ... ten more bean definitions
}

@Configuration(prefix = "primary-")
class PrimaryDbContext extends DbContextTemplate {
    String dbHost() { return "primary.host"; }
}

@Configuration(prefix = "another-")
class AnotherDbContext extends DbContextTemplate {
    String dbHost() { return "secondary"; }
}

With "prefix" attribute these configurations emit beans with names "primary-dataSource", "primary-dataSourceMonitoring", "another-dataSource", "another-dataSourceMonitoring".

However, currently Spring has no anything like "prefix" attribute, so this configuration is not possible, since generated bean names for "dataSource" would be the same for both subclass configurations.

Generally, it is not currently possible in Spring to create reusable configurations (configurations which could be used more than once in the application context). It would be good to have it in large applications.


Affects: 4.2.5

Reference URL: http://stackoverflow.com/questions/36298227/spring-how-to-reuse-the-same-configuration-multiple-times

Issue Links:

4 votes, 5 watchers

Metadata

Metadata

Assignees

No one assigned

    Labels

    in: coreIssues in core modules (aop, beans, core, context, expression)status: declinedA suggestion or change that we don't feel we should currently applytype: enhancementA general enhancement

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions