Я пытаюсь использовать @Inject
для внедрения зависимостей вместо использования ключевых слов stati c. При использовании @Inject
в одном из методов я получаю UnsatisfiedDependencyException
при запуске приложения java.
UserDao
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
public class UserDao {
public UserDao() {
}
private List<String> users = new ArrayList<String>();
public List<String> getUsers() {
return users;
}
public void setUsers(List<String> users) {
this.users = users;
}
public void addUser(final String user){
users.add(user);
}
@Inject
public void populateUsers(final String name){
addUser(name);
}
}
UserService
import java.util.List;
import javax.inject.Inject;
public class UserService {
@Inject
private UserDao userDao;
public UserService() {
}
public List<String> getNames() {
return userDao.getUsers();
}
}
UserResource
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
@Path("users")
public class UserResource {
@Inject
public UserService userService;
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getNameList() throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
String writeValueAsString = objectMapper.writeValueAsString(this.userService.getNames());
return Response.ok(writeValueAsString).build();
}
}
JerseyApplication
public static void main(String[] args) throws Exception {
UserDao greetingDao = new UserDao();
greetingDao.populateUsers("SampleUser");
new JerseyApplication().start();
}
Используя AbstractBinder
и JustInTimeInjectionResolver
, я регистрирую необходимые файлы классов. Я хочу выставить добавленных пользователей через REST api.