목록Spring (9)
주뇽's 저장소
[Spring Boot] 실시간 채팅 기능을 위한 WebSocket, SockJS, STOMP 실시간 채팅 기능은 현대 웹 애플리케이션에서 필수적인 요소 중 하나이다. 사용자가 실시간으로 정보를 교환할 수 있게 함으로써, 애플리케이션의 상호작용성과 사용자 경험을 크게 향상시킨다. 이 글에서는 Spring Boot 애플리케이션에 실시간 채팅 기능을 구현하기 위한 세 가지 주요 기술인 WebSocket, SockJS, STOMP에 대해 소개하고, 각각의 장단점 및 적합한 사용 사례를 탐구한다. WebSocket WebSocket 프로토콜은 실시간 양방향 통신을 가능하게 하는 웹 표준이다. 이는 서버와 클라이언트 간의 지속적인 연결을 유지하며, 데이터를 신속하게 교환할 수 있도록 설계되었다. WebSocket..
JUnit 단위 테스트 - 대규모 애플리케이션에는 수천 개의 코드 파일과 수백만 줄의 코드가 있고 이러한 코드는 여러개의 레이어에 분산되어 있다, 애플리케이션을 구축할 때마다 코드가 제대로 작동하는지 확인해야 한다. 즉, 예상하는 동작과 실제 애플리케이션의 동작을 확인해야 한다. 테스트를 수행하는 방법 1. 전체 애플리케이션을 배포하고 테스트 - jar 파일이나 war파일을 빌드하고 어딘가에 배포 후 확인 : 시스템 테스트, 통합 테스트라 불린다. 2. 애플리케이션 코드의 특정한 단위를 독립적으로 테스트 - 특정 메서드나 메서드 그룹을 테스트 하며 확인 : 단위 테스트(JUnit) 단위 테스트의 장점 - 버그를 조기에 찾고 해결할 수 있다 - 단기적으로는 비용이 많이 들지만 장기적으로 비용 절감 JUni..
DAO(Data Access Object)와 DTO(Data Transfer Object) DAO(Data Access Object)와 DTO(Data Transfer Object)는 소프트웨어 개발, 특히 데이터베이스와의 상호작용을 다룰 때 자주 사용되는 개념이다. 이 둘은 명확히 다른 역할을 하지만, 때때로 혼동되기도 한다. DAO (Data Access Object) 목적 : DAO는 데이터베이스 접근하는 객체로, 데이터베이스의 CRUD(Create, Read, Update, Delete)작업을 처리 특징 : DAO는 데이터베이스 쿼리를 실행하고 결과를 반환하는 메서드를 포함한다. DAO는 데이터베이스와의 상호작용을 추상화하고, 비즈니스 로직과 데이터베이스 사이의 중간 계층 역할을 한다. 예시 : ..
Spring Security 로그인과 로그아웃에 관련된 기능을 쉽게 구현할 수 있음 로그인 구현 Spring Security 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-security' 의존성을 추가하는것만으로 따로 로그인 페이지나 기능을 구현하지 않아도 자동으로 로그인 페이지로 넘어가진다. 개발자 전용 id : user pw : 디버깅 창에서 나오는 패스워드 디버깅 창에서 나오는 패스워드는 항상 바뀌기 때문에 이를 고정된 값으로 매핑해줄 수 있다. ## 추가 application.properties에서 간단하게 아디이와 패스워드 설정하는 법(간단함) spring.security.user.name = username sprin..
JUnit4를 이용하여 Controller 기능을 테스트 하는 도중에 책에서 나온 부분과 실제 함수가 달라 오류가 발생했다. URL 요청에 들어온 파라미터가 제대로 들어왔는지 체크하기 위해 jsonPath 함수를 사용하는데 기존 책은 다음과 같이 작성되어 있다. package com.spring_jyp_todo.springbootTodoProject.controller; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springf..
JDBC와 Spring JDBC를 이용한 코드 비교 - JDBC(Delete) public void deleteTodo(int id){ PrepareStatement st = null; try{ st = db.conn.prepareStatement("delete from todo where id=?"); st.setInt(1, id); st.execute(); } catch (SQLException e){ logger.fatal("Query Failed :, e"); } finaaly { if (st != null){ try{st.close();} catch (SQLException e){} } } } - Spring JDBC(Delete) public void deleteTodo(int id){ jdb..
Spring Framework Modules 모듈설명 Spring Core IoC(Inversion of Control) 컨테이너, 의존성 주입, 자동 연결 등 애플리케이션의 기본적인 구성 요소를 제공한다. Spring MVC 웹 애플리케이션 및 REST API 개발을 위한 MVC(Model-View-Controller) 패턴을 구현한다. Spring WebFlux 비동기 방식의 리액티브 애플리케이션을 구축할 때 사용한다. Spring JDBC 데이터베이스 작업을 추상화하여 SQL 작업을 간소화한다. Spring JMS Java Message Service를 사용하여 메시징 기반 애플리케이션을 개발할 때 사용한다. Spring TEST 테스팅을 위한 풍부한 기능을 제공하여, 단위 테스트와 통합 테스트를 ..
Spring 의존성 주입 방법 3가지 - 생성자 기반 (Bean) @Autowired 생성자 기반은 해당 어노테이션이 의무가 아니다. Spring 팀은 하나의 메서드에서 모든 초기화가 진행되는 생성자 주입을 항상 추천한다.! @Component class myClass{ Dependency1 dependency1; Dependency2 dependency2; // @Autowired 생성자 기반은 해당 어노테이션이 의무가 아니다. public myClass(Dependency1 dependency1, Dependency2 dependency2) { this.dependency1 = dependency1; this.dependency2 = dependency2; } public String to_Strin..