[JAVA] @PostConstruct

Qu'est-ce que @PostConstruct?

mérite

  1. 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é.

  2. 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. .. ** **

Source applicable

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);
        }
    }
}

À la fin

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

@PostConstruct