[Spring] @MockitoBean(Spring 6.2)등장, Deprecated되는 @MockBean(Spring Boot 3.4.0)
·
Spring
@MockBean은 스프링부트 3.4.0부터 Deprecated(코드가 어두워 보이지 않는다면, 우측 하단의 다크모드 버튼을 통해 다크모드를 해제하시면 됩니다!)기존 테스트 코드들은, 테스트 코드가 스프링 컨테이너의 의존도가 높았다.이를 개선하고자 Spring Framework 6.2부터 Bean-Override 기능을 테스트 코드에서 활성화한다고 한다.(물론, Bean-Override 기능은, 프로덕션 코드에서는 지양해야 하고, 어차피 프로덕션에서는 Deprecated 될 기능이다. 즉, Bean-Override 기능이 프로덕션 컨텍스트에서는 없어지고 테스트 컨텍스트에서만 유지되도록 모델이 변경되는 것이다) 기본적이 원리는 Bean-Override를 통해, Bean을 테스트용 Bean으로 교체하는 것이..
[Java] 출력 스트림과 입력 스트림 불일치
·
Programming Language/Java
채팅 서버와 클라이언트를 구현하던 중에, 서버가 보낸 메시지를 클라이언트가 수신하지 못하는 문제가 발생했다. OutputStream에 메시지를 전달하는 Session 객체package main.server.session;import static main.server.config.ServerConstant.CHANGE_USERNAME;import static main.server.config.ServerConstant.CLOSE_CONNECTION;import static main.server.config.ServerConstant.FIND_ALL_USER;import static main.server.config.ServerConstant.INVALID_COMMAND_FORMAT_MESSAGE;impor..
[Spring/DB] 03. 트랜잭션 이해
·
Spring/DB
3. 트랜잭션 이해#Spring/DB정리트랜잭션 - 개념 이해파일이 아닌 데이터베이스에 데이터를 저장하는 이유 트랜잭션하나의 거래를 안전하게 처리하도록 보장커밋(Commit): 모든 작업이 성공해서 데이터베이스에 정상 반영하는 것롤백(Rollback): 작업 중 하나라도 실패해서 거래 이전으로 되돌리는 것트랜잭션 ACID트랜잭션은 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)을 보장해야 함원자성: 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공하거나 모두 실패해야 한다.일관성: 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 예를 들어 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야 한..
[Spring] Spring에서 Bean Validation이 동작하는 내부 원리
·
Spring
Spring에서 Bean Validation이 동작하는 내부 원리#Spring/MVC엔티티 클래스에 Bean Validation 애노테이션 사용엔티티 클래스의 필드에 @NotNull, @Size, @Min, @Max 등과 같은 애노테이션을 붙이면, 해당 필드에 대한 제약 조건이 정의된다.public class User { @NotNull(message = "이메일은 필수입니다.") @Email(message = "올바른 이메일 형식이 아닙니다.") private String email; @Size(min = 2, max = 20, message = "이름은 2자 이상 20자 이하여야 합니다.") private String name; // Getter, Setter ..
[Spring MVC] 스프링 MVC Redirect 처리 방법
·
Spring/MVC
스프링 MVC Redirect 처리 방법#Spring/MVC/Redirect/Redirect 처리 방법/1. HttpServletResponse의 sendRedirect()/2. ResponseEntity/3. RedirectView 직접 반환/4. “redirect:” 접두사/RedirectAttributes/1. Flash Attribute/2. Query Parameter 전달RedirectRedirect 는 클라이언트의 요청을 완전히 새로운 URL로 전달하여 처리하는 방식이다.웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동한다.Redirect 처리 방법1. HttpServletResponse의 sendRedirect()@PostMapping("..
[Spring MVC] 스프링 MVC 기본 기능 정리
·
Spring/MVC
스프링 MVC 기본 기능 정리#Abstract/SpringMVC스프링 MVC 구조와 동작원리, 스프링 MVC가 제공하는 기능의 기본적인 사용법을 정리했습니다./스프링 MVC 구조/ArgumentResolver와 HTTP 메시지 컨버터/ArgumentResolver/HTTP 메시지 컨버터/스프링 MVC 확장/컨트롤러 등록/컨트롤러 등록 - Controller 인터페이스 구현(거의 안씀)/컨트롤러 등록 - HttpRequestHandler 인터페이스 구현(거의 안씀)/컨트롤러 등록 - @Controller, @RestController + @RequestMapping, @XXXMapping/HTTP 조회 방식/HTTP 요청 파라미터 조회/HTTP 요청 파라미터 조회 - 스프링 MVC/1. HttpServle..
[자료구조] 자바 Collection 총 정리(자료구조, Iterator, Iterable, Comparator, Comparable)
·
Data Structure/Java Collection
컬렉션#Abstract/Java/Collection 인터페이스/List 자료 구조/ArrayList - 배열 리스트/연결리스트 - LinkedList/자바 List 인터페이스/자바 ArrayList/자바 LinkedList/Set/해시 알고리즘/자바의 hashCode()/자바 Set 인터페이스/Map 인터페이스/Stack - 사용 금지/Queue 인터페이스/Deque 인터페이스/Deque와 Stack, Queue/순회/Iterable, Iterator/자바가 제공하는 Iterable, Iterator/정렬 - Comparable, Comparator/컬렉션 유틸/Collection 인터페이스 정리Collection 인터페이스Collection 인터페이스는 java.util 패키지의 컬렉션 프레임워크의 핵..
[PS/BOJ] 1541번. 잃어버린 괄호 - C++[cpp]
·
PS/BOJ
문제 이 문제는 문자열 처리와 식의 값을 최소로 만드는 방법을 요구하고 있다.아이디어나올 수 있는 경우의 수를 생각해보자.1 + 2 + 3 + 4 -> 그대로 더한다.1 - 2 - 3 - 4 -> 그대로 뺀다.1 - 2 + 3 - 4-> (2 + 3)을 묶어버린다 1 - (2 + 3) - 4 = 1 - 2 - 3 - 4즉, - 가 한 번 나온 뒤로, 그 뒤에 오는 모든 수는 다 빼주면 된다.코드(중요!)아이디어는 대부분 다 떠올렸겠지만, 문자열 처리를 어떻게 할 지 고민인 분들이 많을 것이다.이 부분이 이 글을 쓰는 이유이기도 한데,구글링해서 나오는 코드 대부분은 아래와 같이 문자를 하나씩 입력받아 숫자, 연산자를 구분하고 있다.#include #include using namespace std; int..
[Spring MVC] 타임리프 문법 정리
·
Spring/MVC
타임리프 몰아서 정리#Spring/Thymeleaf/타임리프 사용 선언/th:xxx=“value2”/타임리프 속성/th:href/th:onclick/반복 출력 - th:each/반복 상태 유지/내용 변경 - th:text/속성 변경 - th:value/속성 변경 - th:action/조건문 평가 - th:if, th:switch/텍스트 - text, utext/Escape/HTML 엔티티/Unescape/th:inline="none"/속성 값 설정/속성 추가/checked 처리">/블록 - /URL 링크 표현식 - @{...}/리터럴 대체 - |...|/변수 표현식 - ${...}/지역 변수 선언 - th:with/URL 링크 표현식2 - @{...}/URL 링크 간단히/타임리프 기본 객체/유틸리티 객체..
Tailwind - 다크모드
·
WEB/CSS
Tailwind - 다크모드#Web/CSSTailwind는 다크 모드를 적용할 수 있는 유틸리티 클래스를 제공하며, 기본적으로 운영 체제의 선호도에 따라 다크 모드를 적용하거나, 사용자가 직접 선택할 수 있게끔 설정할 수 있다.예시: dark 유틸리티 Writes Upside-Down The Zero Gravity Pen can be used to write in any orientation, including upside-down. It even works in outer space. 평시와, 다크 모드가 활성화되었을 때 스타일을 각각 지정한다.다크 모드 전환 전략운영 체제 선호도 사용 (기본 전략,media)Tailwind는 기본적으로 운영 체제의 다크 모드 선호도에 따라 스타일을 ..