| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 스프링 부트
- JPQL
- securitycontextholderfilter
- redis
- kafka
- 페이징
- 지연 로딩
- DLQ
- docker
- JdbcTemplate
- @ComponentScan
- MSA
- dockerhub
- Spring Container
- docker compose
- Routing Key
- Spring
- 컨테이너
- AWS
- Web
- mybatis
- 쿠버네티스
- JWT
- Dead Letter Queue
- JPA
- DI
- 서블릿 컨테이너
- @Transactional
- CORS
- Spring Data JPA
- Today
- Total
목록Spring (80)
look-forest
DataSource커넥션을 얻는 방법은 JDBC DriverManager를 직접 사용하거나, 커넥션 풀을 사용하는 등 다양한 방법이 존재한다. DataSource는 커넥션을 획득하는 방법을 추상화하는 인터페이스이다. 핵심 기능은 커넥션 조회 하나이다. Transaction데이터베이스 서버에 연결을 요청하고 커넥션을 맺게 되면 데이터베이스 서버는 내부에 세션이라는 것을 만든다.세션은 트랜잭션을 시작하고, 커밋 또는 롤백을 통해 트랜잭션을 종료한다. 이후 새로운 트랜잭션을 다시 시작할 수 있다.커밋을 호출하기 전까지는 임시로 데이터를 저장하는 것이다. 따라서 해당 트랜잭션을 시작한 세션(사용자)에게만 변경 데이터가 보이고 다른 세션(사용자)에게는 변경 데이터가 보이지 않는다.수동 커밋 모드로 설정하는 것을..
로그인 처리하기 - 세션 활용쿠키의 보안 문제 대안 - 세션쿠키에 중요한 값을 노출하지 않고, 사용자 별로 예측 불가능한 임의의 토큰(랜덤 값)을 노출하고, 서버에서 토큰과 사용자 id를 매핑해서 인식한다. 그리고 서버에서 토큰을 관리한다.해커가 토큰을 털어가도 시간이 지나면 사용할 수 없도록 서버에서 해당 토큰의 만료시간을 짧게(예: 30분) 유지 한다. 또는 해킹이 의심되는 경우 서버에서 해당 토큰을 강제로 제거하면 된다.서버에 중요한 정보를 보관하고 연결을 유지하는 방법을 세션이라 한다.추정 불가능한 세션 ID를 생성하고, 생성된 세션 ID와 세션에 보관할 값을 서버의 세션 저장소에 보관한다.세션 ID를 클라이언트에 쿠키로 전달한다.로그인 처리하기 - 서블릿 HTTP 세션서블릿을 통해 HttpSes..
검증 (validation) 타임리프 스프링 검증 오류 통합 기능 BindingResult는 스프링이 제공하는 검증 오류를 보관하는 객체이다. BindingResult 는 검증할 대상 바로 다음에 와야한다. BindingResult 는 Model에 자동으로 포함된다.@ModelAttribute에 데이터 바인딩 오류 발생 시 오류 정보( FieldError )를 BindingResult 에 담아서 컨트롤러를 정상 호출 BindingResult에 검증 오류를 적용하는 3가지 방법@ModelAttribute의 객체에 타입 오류 등으로 바인딩 실패 시 스프링이 FieldError 생성해서 BindingResult에 넣어줌개발자가 직접 넣어준다.Validator 사용FieldError, ObjectError-..
Servlet과 멀티스레딩서블릿이란?웹 서버에서 실행되는 자바 프로그램. request 받아 response 응답. 클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트.Servlet은 Http 스펙을 편리하게 사용하게 해준다. 개발자는 비즈니스 로직만 구현하면 된다 서블릿 컨테이너WAS 안의 서블릿 컨테이너가 서블릿을 생성하고 호출해준다.싱글톤으로 관리 -> 동시 요청을 위한 멀티 쓰레드 처리를 지원한다멀티 스레드에 대한 부분은 WAS가 처리해주기 때문에, 개발자가 멀티 스레드 관련 코드를 신경쓰지 않아도 된다!스레드가 서블릿 객체를 호출해준다 ( 스레드: 프로세스 안에서 여러 갈래로 나뉘는 것 )필요한 스레드를 미리 만들어 스레드 풀에 보관하고 관리 MVC 패턴 구현 프론트 컨트롤..
스프링 데이터 JPA 주요 기능스프링 데이터 JPA는 JPA를 편리하게 사용할 수 있도록 도와주는 라이브러리이다. 수많은 편리한 기능을 제공하지만 가장 대표적인 기능은 다음과 같다.공통 인터페이스 기능 - JpaRepository 인터페이스를 통해서 기본적인 CRUD 기능 제공 쿼리 메서드 기능 - 메서드 이름을 분석해서 필요한 JPQL을 만들고 실행해준다. 공통 인터페이스 기능JpaRepository 인터페이스를 통해서 기본적인 CRUD 기능 제공한다.공통화 가능한 기능이 거의 모두 포함되어 있다. JpaRepository 사용법JpaRepository 인터페이스를 인터페이스 상속 받고, 제네릭에 관리할 를 주면 된다.그러면 JpaRepository 가 제공하는 기본 CRUD 기능을 모두 사용할 수 ..
JPA 설정build.gradle//JPA, 스프링 데이터 JPA 추가implementation 'org.springframework.boot:spring-boot-starter-data-jpa' -> spring-boot-starter-jdbc 도 함께 포함 application.properties #JPA loglogging.level.org.hibernate.SQL=DEBUG -> : 하이버네이트가 생성하고 실행하는 SQL을 확인할 수 있다logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE -> : SQL에 바인딩 되는 파라미터를 확인(JPA log springboot 3이상일 경우는 logging.level.org.hibernat..
MyBatis 소개MyBatis는 앞서 설명한 JdbcTemplate보다 더 많은 기능을 제공하는 SQL Mapper 이다. 기본적으로 JdbcTemplate이 제공하는 대부분의 기능을 제공한다. JdbcTemplate과 비교해서 MyBatis의 가장 매력적인 점은 SQL을 XML에 편리하게 작성할 수 있고 또 동적 쿼리를 매우 편리하게 작성할 수 있다는 점이다.JdbcTemplate은 스프링에 내장된 기능이고, 별도의 설정없이 사용할 수 있다는 장점이 있다. 반면에 MyBatis는 약간의 설정이 필요하다. MyBatis는 XML에 작성하기 때문에 라인이 길어져도 문자 더하기에 대한 불편함이 없다. MyBatis는 동적 쿼리를 매우 편리하게 작성 할 수 있는 다양한 기능들을 제공해준다. MyBatis는 ..
JdbcTemplate의 장점설정의 편리함JdbcTemplate은 spring-jdbc 라이브러리에 포함되어 있는데, 이 라이브러리는 스프링으로 JDBC를 사용할 때 기본으로 사용되는 라이브러리이다. 그리고 별도의 복잡한 설정없이 바로 사용할 수 있다.반복 문제 해결JdbcTemplate은 템플릿 콜백 패턴을 사용해서, JDBC를 직접 사용할 때 발생하는 대부분의 반복 작업을 대신 처리해준다. 개발자는 SQL을 작성하고, 전달할 파리미터를 정의하고, 응답 값을 매핑하기만 하면 된다.그 외 대부분의 반복 작업을 대신 처리해준다.- 커넥션 획득 - statement 를 준비하고 실행 - 결과를 반복하도록 루프를 실행 - 커넥션 종료, statement , resultset 종료 - 트랜잭션 다루기 위한 커넥..