How come application.properties will work in a RestController, but not in a service class?
//application.properties test=test
Works Perfect!
@RestController public class invitecontroller { @Autowired inviteconfig inviteconfig; @PostMapping("/v1/invite") public void invite(@RequestBody XXX XXX) { System.out.println(inviteconfig); } }
Returns “Null”
@Service public class inviteservice { @Autowired inviteconfig inviteconfig; public void invite() { System.out.println(inviteconfig); } }
@Configuration @Data public class inviteconfig { private String test; }
Advertisement
Answer
The inviteservice
class is not configured for Spring IoC (Inversion of Control) as a bean, so Spring will not handle the inviteservice
class lifecycle. In this case, @Autowired
is useless.
To fix this try to add @Component
annotation to invitesevice
, to declare it as a component:
@Component public class inviteservice { @Autowired inviteconfig inviteconfig; public void invite() { System.out.println(inviteconfig); } }
In the case of the controller, with @RestController
, Spring will recognize your class as a Spring component.
Finally, don’t forget to inject inviteservice
using Spring IoC (using @Autowired
annotation, or other means)