Spring @Component
, @Controller
, @Service
, and @Repository
classes are singletons by default,
meaning only one instance of the class is ever instantiated in the application. Typically such a class might have a few static
members,
such as a logger, but all non-static
members should be managed by Spring.
This rule raises an issue when a singleton @Component
, @Controller
, @Service
, or @Repository
,
not annotated with @ConfigurationProperties
, has non-static
members that are not annotated with one of:
org.springframework.beans.factory.annotation.Autowired
org.springframework.beans.factory.annotation.Value
javax.annotation.Inject
javax.annotation.Resource
Add one of these annotations to all non-static
members: @Resource
, @Inject
, @Autowired
or
@Value
.
@Controller public class HelloWorld { private String name = null; @RequestMapping("/greet", method = GET) public String greet(String greetee) { if (greetee != null) { this.name = greetee; } return "Hello " + this.name; // if greetee is null, you see the previous user's data } }