Я сделал проект maven в Spring 3.0, я сделал несколько DAO, сервисов и контроллеров, в одном из моих контроллеров я вызываю сервис, в котором запускаю поток, проблема в том, что в потоке я объявляю «сервис переменная", которая должна быть инициализирована с помощью аннотации Autowired, но она не работает, и переменная не инициализирована и имеет значение null.
это класс потока
package com.project.tasks;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Component;
import com.project.entities.user.User;
import com.project.services.IUserService;
@Component
public class AddFriendInMyFriendListTaskExecutor {
private class AddFriendInMyFriendListTask implements Runnable {
// HERE IS THE PROBLEM
@Autowired
private IUserService uService;
private User a;
private User b;
public AddFriendInMyFriendListTask() {
;
}
public AddFriendInMyFriendListTask(User aA, User bB) {
a = aA;
b = bB;
}
public User getA() {
return a;
}
public void setA(User a) {
this.a = a;
}
public User getB() {
return b;
}
public void setB(User b) {
this.b = b;
}
public void run() {
// FROM HERE IT PRINTS THE VALUE OF uService THAT IS NULL
System.out.println("uService:" + uService);
uService.insertRightUserIntoLeftUserListOfFriends(a, b);
}
}
private TaskExecutor taskExecutor;
public AddFriendInMyFriendListTaskExecutor(TaskExecutor taskExecutor) {
this.taskExecutor = taskExecutor;
}
public void doIt(User a, User b) {
taskExecutor.execute(new AddFriendInMyFriendListTask(a, b));
}
}
это фрагмент кода, который вызывает поток
User a = uDao.getUser(hrA.getMyIdApp());
User b = uDao.getUser(hrA.getOtherIdApp());
SimpleAsyncTaskExecutor taskExecutor = new SimpleAsyncTaskExecutor();
AddFriendInMyFriendListTaskExecutor tmp = new AddFriendInMyFriendListTaskExecutor(taskExecutor);
tmp.doIt(a, b);
Я хотел бы подчеркнуть, что во всех других тестах, в которых я не вызываю никаких потоков, Autowired экземпляра UserService работает правильно! Метод, который я вызываю: insertRightUserIntoLeftUserListOfFriends(User a, User b), работает корректно.