Browse Source
Add a `BindRestriction` option to `Bindable` which allows direct property binding to be bypassed. The option is automatically applied by the `ConfigurationPropertiesBinder`. Prior to this commit, `@ConfugurationProperties` binding could silently fail if a direct property existed that could be converted to the properties class. This can be the case if a single-argument constructor is available as the `ObjectToObject` converter would kick in. Closes gh-16038 Co-authored-by: Madhura Bhave <mbhave@pivotal.io>pull/24980/head
8 changed files with 239 additions and 14 deletions
@ -0,0 +1,45 @@
@@ -0,0 +1,45 @@
|
||||
/* |
||||
* Copyright 2012-2021 the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.boot.context.properties; |
||||
|
||||
/** |
||||
* A {@link ConfigurationProperties @ConfigurationProperties} with an additional |
||||
* single-arg public constructor. Used in {@link ConfigurationPropertiesTests}. |
||||
* |
||||
* @author Madhura Bhave |
||||
*/ |
||||
@ConfigurationProperties(prefix = "test") |
||||
public class WithPublicStringConstructorProperties { |
||||
|
||||
private String a; |
||||
|
||||
public WithPublicStringConstructorProperties() { |
||||
} |
||||
|
||||
public WithPublicStringConstructorProperties(String a) { |
||||
this.a = a; |
||||
} |
||||
|
||||
public String getA() { |
||||
return this.a; |
||||
} |
||||
|
||||
public void setA(String a) { |
||||
this.a = a; |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,43 @@
@@ -0,0 +1,43 @@
|
||||
/* |
||||
* Copyright 2012-2021 the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.boot.context.properties.bind; |
||||
|
||||
/** |
||||
* Java bean with an additional public single-arg constructor. |
||||
* |
||||
* @author Phillip Webb |
||||
*/ |
||||
public class JavaBeanWithPublicConstructor { |
||||
|
||||
private String value; |
||||
|
||||
public JavaBeanWithPublicConstructor() { |
||||
} |
||||
|
||||
public JavaBeanWithPublicConstructor(String value) { |
||||
setValue(value); |
||||
} |
||||
|
||||
public String getValue() { |
||||
return this.value; |
||||
} |
||||
|
||||
public void setValue(String value) { |
||||
this.value = value; |
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue