Мне нужно использовать autowired более чем в одном классе с ScheduledExecutorService, то, что я пробовал, показано в этом коде. размер журнала списка пользователей в приведенном ниже примере всегда показывает 0, даже после добавления пользователя в массив. Как правильно использовать Autowired и ScheduledExecutorService при весенней загрузке?
@Component
public class AnotherClass {
List<User> users = new ArrayList();
public void addUser(User user){
users.add(user);
}
public void logUsers(){
logger.info("User size " + users.size()); <================= Always logs 0, when called from executor
}
}
@RestController
public class SecondClass {
@Autowired
private AnotherClass anotherClass;
@GetMapping(value="/user/test")
public void logUsers(){
anotherClass.addUser(new User());
}
}
Класс приложения
@Component
@SpringBootApplication
public class SpringBootDemoApplication {
private ScheduledExecutorService exec = Executors.newScheduledThreadPool(1);
@Autowired
private AnotherClass anotherClass;
@PostConstruct
public void init() {
logger();
}
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoApplication.class, args);
}
public void logger(){
exec.scheduleAtFixedRate(new Runnable(){
@Override
public void run(){
try {
anotherClass.logUsers();
}catch (Exception e){
}
}
}, 2000, 1000, TimeUnit.MILLISECONDS);
}
}