我试图使用@Inject
来注入依赖项,而不是使用静态关键字。
在其中一种方法上使用@Inject
时,我在运行Java应用程序时得到了UnsatisfiedDependencyException
。
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公开添加的用户。