- 스프링부트
- nginx
- Docker
- AWS
- Django
- ORM
- 스프링
- spring boot
- spring
- 1차원 배열
- session
- java
- 자바
- join
- spring security 6
- mysql
- springboot
- jpa
- Git
- spring mvc
- SSL
- sql
- 문자열
- string
- 프로그래머스
- PYTHON
- select
- DI
- 데이터베이스
- @transactional
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
목록Java/Spring (55)
개발하는 자몽
에러 원인정말... 바보같은... 실수였다... 오류가 났던 테스트 코드는 아래와 같다. ... @PersistenceContext EntityManager em; @Test void test() { UserEntity userEntity = UserEntity.builder() .nickname("test") .email("test@example.com") .build(); userEntity = userRepository.save(userEntity); userService.sumTotalAmount(userEntity, 10_000L); ..
@Embeddable, @Embedded`@Embeddable` 애노테이션이 있는 클래스는 기본 생성자가 필요함임베디드 타입은 값 타입에 속하는데, 이러한 값 타입은 여러 엔티티에서 공유하면 side effect를 일으킬 수 있다.따라서 불변 객체(Immutable Object)로 설정하여 이러한 문제를 방지하는 것이 좋다.`@Embeddable` 클래스에 수정자(setter)를 생성하지 않고 생성자만 두어, 생성자로만 값을 설정하게 한다수정자가 없으므로 해당 임베디드 값 타입을 필드로 갖고 있는(@Embedded) 엔티티에서는 특정 값만 수정하는 것이 불가능. 객체를 새로 생성해야 함. public static void main(String args[]) { Address address = new..
상황`Required reuqest body is missing`라는 문구와 함께 `HttpMessageNotReadableException` 타입의 에러가 발생했다. `Controller`의 있는 메서드에서 `request body`를 인식하지 못하는 문제인 것으로 확인했다.@RestControllerpublic class RestController { @PostMapping("/aaa") public ResponseEntity aaa(@RequestBody @Valid final RequestDto dto) { ... return ResponseEntity.status(HttpStatus.CREATED).build(); } ...}해당 메서드에 `@RequestBo..
Notice Spring Boot 3.2.5, Spring Security 6.2.5 기반으로 작성한 글입니다. 아래 포스팅들을 먼저 보면 좋습니다.Spring Security 6 - Architecture → Security Exception 처리하기[Spring Security] 토큰 기반 로그인/로그아웃 구현하기 이 글의 목표는 Spring Security에서 토큰 기반 인증을 진행할 때 발생한 예외를 `@RestControllerAdvice`로 처리하는 것입니다. 시큐리티 예외 처리 구현Spring Security에서 예외 처리는 다음과 같은 아키텍처로 이루어진다. FilterChainSpring Security는 `FilterChain`으로 구성되어 있으며, 각 필터는 요청을 처리하거나..
Notice Spring Boot 3.2.5, Spring Security 6.2.5 기반으로 작성한 글입니다. 지난 포스팅에서 이어집니다.[Spring Security]토큰 기반 로그인/로그아웃 구현하기 역할과 권한사용자의 역할(role)과 권한(permission/authority)을 구현하여 기능 접근에 제약을 둘 수 있다. 만일 권한이 없는 기능에 접근하면 403 Forbidden이 발생한다. 역할 및 권한 구현 시 다음과 같은 것들을 고려해야 한다. 한 역할은 여러 개의 권한을 가질 수 있다.여러 명의 사용자는 여러 개의 역할을 가질 수 있다. → 다대다 관계역할을 하나의 Entity로 두어 구현할 수 있지만, 이 경우에 고려할 것이 많아진다. 다대다 관계 매핑 → `@ManyToMany`중..
Notice Spring Boot 3.2.5, Spring Security 6.2.5 기반으로 작성한 글입니다. Notice 24.07.06 로그인 구현 부분 `JwtAuthenticationFilter` 잘못된 내용 수정 Spring Security Authentication ArchitectureSpring Security를 기반으로 보안 관련 기능을 구현하기 위해서는 위의 그림을 이해해야 한다. 아래는 로그인을 예시로 한 Spring Security 인증 과정이다. 1. 사용자가 로그인 정보와 함께 인증을 요청한다. 2. `AuthenticationFilter`가 요청을 가로채어 인증에 사용될 UsernamePasswordAuthenticationToken 객체를 생성한다....public ..
Spring Security 6 - Architecture 공식 문서를 번역했습니다. 필요에 의해 설명을 추가한 부분도 있습니다. Architecture :: Spring SecurityThe Security Filters are inserted into the FilterChainProxy with the SecurityFilterChain API. Those filters can be used for a number of different purposes, like authentication, authorization, exploit protection, and more. The filters are executed in a specdocs.spring.io 🔖목차🔖Spring Security..
스프링 부트 - 핵심 원리와 활용 | 김영한 - 인프런김영한 | 실무에 필요한 스프링 부트는 이 강의 하나로 모두 정리해드립니다., 백엔드 개발자를 위한 스프링 부트 끝판왕! 실무에 필요한 내용을 모두 담았습니다. [임베딩 영상] 김영한의 스www.inflearn.com외부설정과 프로필1 오랜만에 Spring을 공부하고 있는데 설정 분리 등을 다 잊어버린 것 같아서 복기 겸 간단하게 정리한다. DB 설정값을 코드 내부가 아닌 개발 서버와 운영 서버에 `application.properties`와 같은 파일을 두어 설정을 주입할 수 있다. 하지만 각 서버에 저장된 설정 파일을 관리하거나 변경 이력을 확인하기 어렵다. 이러한 문제점은 설정 파일을 프로젝트 내부에 포함해서 관리하여 해결할 수 있다. 설..
아래 블로그 글을 참고하여 정리했습니다. Spring DeleteAllBy...In 호출시 에러 ( TransactionRequiredException ) 문제 상황 : deleteAllByIdxIn 호출 시 entitymanager가 왜 없을까? JPA OSIV라면 기본적으로 트랜잭션 범위는 서비스 단까지 있을테고, entity manager는 생성됐을 것이다. 그런데 왜 아래와 같은 에러가 났을까 happyer16.tistory.com 상황 에러 문구 javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably proce..
build.gradle plugins { id 'java' id 'org.springframework.boot' version '3.1.0' id 'io.spring.dependency-management' version '1.1.0' } group = 'com.jaamong' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { ... //querydsl implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' an..