본문 바로가기
GD's IT Lectures : 기초부터 시리즈/스프링부트(Spring Boot) 기초부터 ~

[스프링 부트(SpringBoot) : 중급] 웹 개발 심화

by GDNGY 2023. 5. 5.

3. 웹 개발 심화

3.1. 예외 처리

스프링 부트에서는 예외 처리를 위해 @ExceptionHandler, @ControllerAdvice 및 @ResponseStatus 어노테이션을 사용할 수 있습니다. 이를 사용하면 애플리케이션 전체에서 발생하는 예외를 쉽게 처리할 수 있습니다. @ExceptionHandler는 특정 예외 클래스에 대해 예외 처리 로직을 작성할 수 있도록 해주며, @ControllerAdvice는 컨트롤러 전체에 걸쳐 예외 처리 로직을 적용할 수 있도록 해줍니다. @ResponseStatus는 예외 발생 시 반환할 HTTP 상태 코드를 지정할 수 있습니다.

 

예제 코드

@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(value = {CustomException.class})
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public ResponseEntity<Object> handleCustomException(CustomException ex) {
        Map<String, Object> errorBody = new HashMap<>();
        errorBody.put("message", ex.getMessage());
        errorBody.put("timestamp", LocalDateTime.now());
        return new ResponseEntity<>(errorBody, HttpStatus.BAD_REQUEST);
    }
}

 

3.2. 템플릿 엔진 사용

스프링 부트에서는 다양한 템플릿 엔진을 사용할 수 있습니다. 예를 들어, Thymeleaf, Freemarker, Mustache 등의 템플릿 엔진을 사용할 수 있습니다. 템플릿 엔진을 사용하면 동적인 웹 페이지를 쉽게 생성할 수 있습니다. 템플릿 엔진들은 HTML 문서 내에 특별한 문법을 사용하여 동적인 데이터를 표시할 수 있습니다. 이를 통해 서버에서 전달받은 데이터를 사용자에게 표시할 수 있습니다.

 

예제 코드 (Thymeleaf)

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Template Engine Example</title>
</head>
<body>
    <h1 th:text="${message}"></h1>
    <ul>
        <li th:each="item : ${list}">
            <span th:text="${item.name}"></span>
        </li>
    </ul>
</body>
</html>

 

3.3. 웹소켓 사용

 

스프링 부트에서는 웹소켓을 사용해 실시간 양방향 통신을 구현할 수 있습니다. 스프링 부트의 웹소켓 지원으로 @EnableWebSocket, @ServerEndpoint, @SendTo 등의 어노테이션을 사용하여 웹소켓을 쉽게 구현할 수 있습니다. 웹소켓은 클라이언트와 서버 간의 지속적인 연결을 가능하게 하여, 서로 실시간으로 데이터를 주고받을 수 있습니다. 이를 통해 채팅 애플리케이션, 실시간 알림 시스템 등의 기능을 구현할 수 있습니다.

 

예제 코드 (웹소켓 설정)

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    @Autowired
    private CustomWebSocketHandler customWebSocketHandler;

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(customWebSocketHandler, "/websocket-endpoint")
            .setAllowedOrigins("*");
    }
}

 

예제 코드 (웹소켓 핸들러)

@Component
public class CustomWebSocketHandler extends TextWebSocketHandler {

    private final Map<String, WebSocketSession> sessions = new ConcurrentHashMap<>();

    @Override
    public void afterConnectionEstablished(WebSocketSession session) {
        sessions.put(session.getId(), session);
    }

    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        for (WebSocketSession s : sessions.values()) {
            s.sendMessage(message);
        }
    }

    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) {
        sessions.remove(session.getId());
    }
}

 

 

2023.05.05 - [프로그래밍/스프링부트(Spring Boot) 기초부터 ~] - [스프링 부트(SpringBoot) : 중급] 데이터베이스 연동 심화

 

[스프링 부트(SpringBoot) : 중급] 데이터베이스 연동 심화

2. 데이터베이스 연동 심화 여기서는 스프링 부트와 데이터베이스 연동의 심화된 내용을 다룹니다. 트랜잭션 관리, 캐싱 사용, 여러 데이터 소스 설정에 대해 알아보겠습니다. 2.1. 트랜잭션 관리

gdngy.tistory.com

 

반응형

댓글