Avatar
0
Vu Luong Anh Pundit
Làm sao add lobby room vào globalRoomManager khi khởi tạo
Em dùng @EzyConfigurationBefore để khởi tạo lobbyRoom:
@EzyConfigurationBefore
public class MMOVirtualWorldConfig extends EzyLoggable {	
	@EzySingleton("lobbyRoom")
	public NormalRoom lobbyRoom() {
		logger.info("Initialize lobby room");
		return NormalRoom.builder()
				.build();
	}
}

Trong GameService lại có 1 thằng roomManager để quản lý toàn bộ rooms:

@Setter
@EzySingleton
public class GameServiceImpl implements GameService {
	private final RoomManager roomManager
			= new SynchronizedRoomManager();
}

Em muốn add thêm lobbyRoom vào roomManager khi khởi tạo nó. Vậy em có nên khởi tạo roomManager theo kiểu @EzyConfigurationBefore không anh?

  • Answer
game-box
Remain: 5
3 Answers
Avatar
Em làm được bằng cách dùng @EzyConfigurationBefore(priority = 1) rồi. Có cách nào hay hơn ko ạ?
  • 0
  • Reply
Avatar
tvd12 Pundit
tvd12 Pundit
The Best Answer
Vậy em chuyển thằng

public NormalRoom lobbyRoom() {
   logger.info("Initialize lobby room");
   return NormalRoom.builder()
      .build();
}

vào GameServiceImpl và add nó vào roomManager ở hàm tạo hoặc hàm postContruct em ạ

  • 1
  • Reply
Avatar
Ở hàm tạo của GameServiceImpl nó chưa kịp set value cho các fields anh ạ --> lobbyRoom sẽ bị null. Mình implement lớp nào để có postContruct vậy anh?

  • 0
  • Reply