Add FieldMode for field hints and ensure that it cannot be downgraded

Add a `FieldMode` enum analogous to `ExecutableHint` and update
`FieldHint` to ensure that registration cannot downgrade `WRITE`
to `READ`.

Fixes gh-29055
This commit is contained in:
Phillip Webb
2022-09-01 14:37:23 -07:00
parent 0bd923b0a7
commit da1005cd66
13 changed files with 188 additions and 30 deletions

View File

@@ -48,6 +48,7 @@ import org.springframework.aot.generate.GenerationContext;
import org.springframework.aot.generate.MethodReference;
import org.springframework.aot.hint.ExecutableMode;
import org.springframework.aot.hint.FieldHint;
import org.springframework.aot.hint.FieldMode;
import org.springframework.aot.hint.RuntimeHints;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeansException;
@@ -914,7 +915,7 @@ public class AutowiredAnnotationBeanPostProcessor implements SmartInstantiationA
private static final String INSTANCE_PARAMETER = "instance";
private static final Consumer<FieldHint.Builder> ALLOW_WRITE = builder -> builder
.allowWrite(true);
.withMode(FieldMode.WRITE);
private final Class<?> target;