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 Enlightened
tvd12 Enlightened
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?
<img src="https://stackask.com/wp-content/uploads/2021/08/Screen-Shot-2021-08-10-at-16.35.36-1024x471.png" alt="" class="alignnone size-large wp-image-805" />
  • 0
  • Reply