Skip to content

Provide a way to customize the names of JavaBean properties when they're read and written for data binding purposes [SPR-9242] #13880

Closed
@spring-projects-issues

Description

@spring-projects-issues

Keith Donald opened SPR-9242 and commented

It's becoming more and more common in a HTTP environment for REST APIs to define fields using underscore notation e.g. (access_token) vs. camelCase notation (e.g. accessToken). Facebook and Twitter APIs, for example, use underscores throughout their field names for space separators and do not use camel case except in a few legacy compatibility scenarios.

I am interested in being consistent with what the others are doing--for this reason I prefer underscore_naming for my public REST API that can be accessed by different clients written in different languages. Unfortunately, Spring's data binding framework doesn't AFIK provide a feature where a custom bind field name e.g (POST resource?access_token=?) can be mapped onto a bean property (e.g. Resource#get/setAccessToken(...)). Defining properties like getAccess_token() is less than ideal since it doesn't match local Java coding conventions.

Jackson has a @JsonProperty annotation that provides such a feature for JSON reading and writing, but this doesn't cover the POST form parameter binding case. We could provide something similar e.g. @Property. Alternatively, we could just support mapping underscore style naming onto camelCase naming.

Another environment where this could be helpful would be in the use of Postgres databases. Postgres column names are case insensitive by default so underscore is by far the most common convention there.


Affects: 3.1.1

Issue Links:

1 votes, 2 watchers

Metadata

Metadata

Assignees

Labels

in: coreIssues in core modules (aop, beans, core, context, expression)in: webIssues in web modules (web, webmvc, webflux, websocket)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