| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
- junit
- java테스트
- junit5
- string
- CSS
- Eclipse
- Array
- HashMap
- Java
- Visual Studio Code
- 단위테스트
- javascript
- 자바스크립트
- 정규식
- 스프링부트
- SpringBoot
- 자바문법
- IntelliJ
- list
- 자바
- math
- 테스트자동화
- js
- input
- 배열
- vscode
- html
- 인텔리제이
- 문자열
- ArrayList
- Today
- Total
목록스프링부트 (19)
어제 오늘 내일
과거에 MyBatis나 JDBC를 쓸 때는 개발자가 직접 SQL을 한 땀 한 땀 짰습니다. "DB에 저장해!" 하면 INSERT 쿼리를 날리고, "수정해!" 하면 UPDATE 쿼리를 날렸죠.하지만 JPA(ORM)의 세계는 다릅니다.우리는 그저 자바 객체(Entity)를 다루기만 하면 됩니다. 그러면 JPA가 알아서 적절한 SQL을 생성해 DB에 날려줍니다.이 모든 것을 가능하게 하는 JPA의 심장, '영속성 컨텍스트'에 대해 알아볼까요? 1. 영속성 컨텍스트가 뭔가요?쉽게 말해 "애플리케이션과 데이터베이스 사이에 있는 중간 관리자(캐시)"입니다.우리가 객체를 저장하거나 조회할 때, 바로 DB로 가는 게 아닙니다. 먼저 이 영속성 컨텍스트라는 곳에 보관됩니다. 그리고 JPA는 이 컨텍스트에 있는 정보를 ..
"이메일 형식이 아닙니다.", "비밀번호는 8자 이상이어야 합니다."회원가입 할 때 이런 메시지 많이 보셨죠? 프론트엔드에서도 막을 수 있지만, 백엔드에서의 검증은 필수입니다. (해커들은 프론트엔드를 우회해서 요청을 보내니까요!)오늘은 if문 도배 없이, 어노테이션 몇 개로 깔끔하게 데이터를 검증하는 Bean Validation을 알아보겠습니다. 1. 의존성 추가부터! (build.gradle)Spring Boot 2.3 버전 이상부터는 별도의 라이브러리를 추가해야 합니다.dependencies { implementation 'org.springframework.boot:spring-boot-starter-validation'} 2. DTO에 규칙 정하기 (어노테이션의 마법)데이터를 받는 객체..
개발하다 보면 비즈니스 로직보다 예외 처리 코드가 더 길어지는 주객전도 현상을 자주 겪게 됩니다.try { // 로직 수행...} catch (IllegalArgumentException e) { return ResponseEntity.badRequest().build();} catch (Exception e) { return ResponseEntity.internalServerError().build();}모든 컨트롤러마다 이런 코드를 복사-붙여넣기 하고 계신가요? 오늘은 Spring Boot가 제공하는 강력한 예외 처리 메커니즘으로 코드를 획기적으로 줄이는 방법을 소개합니다. 1. 컨트롤러 안에서 해결하기: @ExceptionHandler특정 컨트롤러 안에서 발생하는 에러만 잡고 싶..
개발하다가 에러가 나면 습관적으로 sysout을 치시나요?System.out.println("여기까지 실행됨: " + data);이 한 줄의 코드가 운영 서버에서는 치명적인 성능 저하를 일으킬 수 있다는 사실, 알고 계셨나요? 오늘은 진짜 개발자가 되기 위한 첫걸음, 로깅(Logging)에 대해 알아보겠습니다. 1. 왜 System.out.println은 안 되나요?이유는 간단합니다. 성능과 관리 때문입니다.블로킹(Blocking) I/O: System.out은 출력하는 동안 프로그램이 잠시 멈춥니다(Block). 요청이 폭주하는 서버에서 모든 스레드가 멈칫멈칫한다면? 전체 성능이 뚝 떨어집니다.정보 부족: 언제(Time), 누가(Thread), 어디서(Class) 로그를 남겼는지 알 수 없습니다.제어..
애플리케이션을 개발할 때 가장 골치 아픈 것 중 하나가 바로 환경(Environment) 관리입니다.Local: 내 컴퓨터 (가벼운 H2 DB, 디버그 로그 콸콸)Dev: 개발 서버 (팀원들과 공유하는 DB)Prod: 운영 서버 (실제 서비스 DB, 로그는 에러만)이때마다 코드를 수정해서 다시 빌드한다면? 상상만 해도 끔찍하죠. 오늘은 Spring Boot가 제공하는 강력한 설정 파일(yml) 관리와 프로파일(Profile) 기능을 완벽하게 정리해 드립니다. 1. properties vs YAML(.yml): 무엇을 써야 할까?Spring Boot는 기본적으로 application.properties 파일을 만들어주지만, 실무에서는 90% 이상 YAML(야믈, .yml) 형식을 선호합니다. 이유는 가독..
Spring Boot를 처음 접할 때 가장 놀라워하는 점은 "설정할 게 거의 없다"는 것입니다. 과거 Spring Legacy 시절에는 XML 파일에 수백 줄의 설정을 적어야 했는데, 지금은 build.gradle에 라이브러리 한 줄만 추가하면 끝납니다.이게 가능한 이유는 바로 @SpringBootApplication 어노테이션 속에 숨겨진 자동 설정(Auto Configuration) 덕분입니다. 오늘은 이 '마법' 뒤에 숨겨진 '과학(로직)'을 알아보겠습니다. 1. 비밀의 열쇠: @SpringBootApplication프로젝트를 생성하면 메인 클래스 위에 딱 하나 붙어있는 이 어노테이션, 다들 보셨죠?@SpringBootApplicationpublic class MyServerApplication ..
개발을 하다 보면 System.out.println() 대신 로그(Log)를 남겨야 한다는 말을 자주 듣게 됩니다. 왜 그럴까요? 그리고 스프링 부트는 내부적으로 어떤 원리로 로그를 찍는 걸까요? 5분 만에 완벽히 이해해 봅시다!1. 왜 println이 아니라 '로깅'인가요?성능: 로그는 비동기적으로 처리하거나 파일로 남길 수 있어 서비스 성능에 영향을 덜 줍니다.레벨 제어: 운영 중에는 중요한 정보만 보고, 개발 중에는 상세한 정보를 보는 등 출력 수준을 조절할 수 있습니다.관리: 날짜별로 파일을 나누거나, 특정 용량이 넘으면 압축하는 등의 관리가 자동화됩니다. 2. 스프링 부트 로깅의 핵심 구조 (SLF4J와 Logback)스프링 부트를 쓰면 별도의 설정 없이도 로그가 찍히는 이유는 spring-bo..
1. pom.xml(maven인 경우) 또는 build.gradle (gradle인 경우) 파일 확인하기plugins { id 'org.springframework.boot' version '3.2.0' // 스프링부트 버전 } org.springframework.boot spring-boot-starter-parent 3.2.0 2. Project Structure 확인하기 (IntelliJ)File > Project Structure > Project Settings > Modules > main > Dependencies 프로젝트 스트럭처의 Dependencies 목록에서 Spring Boot 라이브러리의 버전을 확인할 수 있습니다. 3...
application.properties 파일 수정하기 Command Line 옵션 추가하기 WebServerFactoryCustomizer 인터페이스 구현하기 SpringApplication의 setDefaultProperties 1. application.properties 파일 수정하기 server.port = 8081 2. Command Line 옵션 추가하기 java -jar hello-spring.jar --server.port=8081 또는 java -jar -Dserver.port=8081 hello-spring.jar 3. WebServerFactoryCustomizer 인터페이스 구현하기 @Component public class MyWebServerFactoryCustomizer im..