Inspectopedia Help

@Configuration proxyMethods usage warnings

Reports warnings on incorrectly used proxy methods. Spring Framework 5.2 has introduced an optimization for @Configuration class processing that can be enabled via an attribute @Configuration(proxyBeanMethods = false).

If you disable proxyBeanMethods, the proxy instances are no longer created and calling the method invokes it again (returning a new instance every time). As a result, you have no guarantee that you're actually injecting the corresponding bean in the context.

Incorrect bean method call example:

@Configuration(proxyBeanMethods = false) class TestConfiguration { @Bean public FirstBean firstBean() { return new FirstBean(); } @Bean public SecondBean secondBean() { return new SecondBean(firstBean()); // -> incorrect call } }

You can set proxyBeanMethods to true or rewrite the code as follows:

@Configuration(proxyBeanMethods = false) class TestConfiguration { @Bean public FirstBean firstBean() { return new FirstBean(); } @Bean public SecondBean secondBean(FirstBean someBean) { // -> correct injected instance return new SecondBean(someBean); } }

Also, the inspection checks @Bean method calls in a class without the @Configuration stereotype (in "bean lite mode"):

@Component class TestComponent { @Bean public FirstBean firstBean() { return new FirstBean(); } @Bean public SecondBean secondBean() { return new SecondBean(firstBean()); // -> incorrect call } }

Inspection Details

Available in:

IntelliJ IDEA 2023.3, Qodana for JVM 2023.3

Plugin:

Spring, 233.SNAPSHOT

Last modified: 13 July 2023