Reject @Bean method with void return type

Closes gh-31007
This commit is contained in:
Juergen Hoeller
2023-08-07 15:00:08 +02:00
parent 3c34e69cc2
commit d3d414c3c7
2 changed files with 30 additions and 2 deletions

View File

@@ -42,8 +42,13 @@ final class BeanMethod extends ConfigurationMethod {
@Override
public void validate(ProblemReporter problemReporter) {
if ("void".equals(getMetadata().getReturnTypeName())) {
// declared as void: potential misuse of @Bean, maybe meant as init method instead?
problemReporter.error(new VoidDeclaredMethodError());
}
if (getMetadata().isStatic()) {
// static @Bean methods have no constraints to validate -> return immediately
// static @Bean methods have no further constraints to validate -> return immediately
return;
}
@@ -71,6 +76,15 @@ final class BeanMethod extends ConfigurationMethod {
}
private class VoidDeclaredMethodError extends Problem {
VoidDeclaredMethodError() {
super("@Bean method '%s' must not be declared as void; change the method's return type or its annotation."
.formatted(getMetadata().getMethodName()), getResourceLocation());
}
}
private class NonOverridableMethodError extends Problem {
NonOverridableMethodError() {