Le bean n'est pas encore initialisé lorsque le constructeur est appelé. (Il n'y a pas de dépendances insérées.) Mais en utilisant @PostConstruct, vous pouvez vérifier la dépendance en même temps que le bean est initialisé.
Vous pouvez être assuré qu'il ne fonctionnera qu'une seule fois dans le cycle de vie du haricot. (** Parce qu'il n'est initialisé qu'une seule fois lorsque le bean est créé lorsque WAS monte.) Par conséquent, vous pouvez empêcher le bean d'être initialisé plusieurs fois en utilisant l'annotation ** PostConstruct. .. ** **
C'est une partie du code que j'ai écrit lorsque j'étudiais WebSocket.
@Slf4j
@RequiredArgsConstructor
@Service
public class ChatService {
private final ObjectMapper objectMapper;
private Map<String, ChatRoom> chatRooms;
@PostConstruct
private void init() {
chatRooms = new LinkedHashMap<>();
}
public List<ChatRoom> findAllRoom() {
return new ArrayList<>(chatRooms.values());
}
public ChatRoom findRoomById(String roomId) {
return chatRooms.get(roomId);
}
public ChatRoom createRoom(String name) {
String randomId = UUID.randomUUID().toString();
ChatRoom chatRoom = ChatRoom.builder()
.roomId(randomId)
.name(name)
.build();
chatRooms.put(randomId, chatRoom);
return chatRoom;
}
public <T> void sendMessage(WebSocketSession session, T message) {
try {
session.sendMessage(new TextMessage(objectMapper.writeValueAsString(message)));
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
}
Lorsque je regardais l'exemple de code et les matériaux, je l'ai souvent utilisé dans une classe avec l'annotation Service, mais je dois l'examiner. ..
Recommended Posts