Tôi đã tạo dịch vụ JAX-RS trong đó tôi muốn tiêm một bean có phạm vi ứng dụng. Vấn đề là đậu không được tiêm. Làm thế nào là điều này gây ra và làm thế nào tôi có thể giải quyết nó?Không thể tiêm @ApplicationSố đậu được kiểm tra trong dịch vụ JAX-RS
dịch vụ JAX-RS:
@Path("room")
public class RoomService {
@Inject
GameController gc;
public RoomService() {}
@Path("create")
@GET
@Produces("application/json")
public String create() {
Room r = new Room();
gc.addRoom(r); // gc is null
return r.toJson();
}
}
Application scoped đậu
import java.util.ArrayList;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Named;
import pepuch.multuplayergameserver.entity.Game;
import pepuch.multuplayergameserver.entity.Room;
@Named
@ApplicationScoped
public class GameController {
private Game game;
public GameController() {
this.game = new Game(new ArrayList<Room>());
}
public boolean addRoom(Room room) {
if (!game.getRooms().contains(room)) {
return game.getRooms().add(room);
}
return false;
}
}
Mã 'GameController' của bạn không biên dịch và cũng thiếu' @ Named'. Vui lòng không viết mã chưa được kiểm tra. Copypaste mã thực và thử nghiệm để thay thế. – BalusC
Tôi đã sửa nó. Lấy làm tiếc. Tôi đã thêm '@ Named' nhưng nó vẫn không hoạt động. Tôi cho rằng '@ Named' chỉ dành cho 'EL', đó là lý do tại sao tôi không thêm cái này trước đây. – pepuch
Tại sao @Named? Sẽ không tạo ra bất kỳ sự khác biệt nào. –