목표 및 기대효과 Spring Boot 기반 프로젝트에 Spring Security를 이용하여 시스템에 대한 사용자 접근 제어를 손쉽게 구현할 수 있다. 사용자 사용자(UserDetails)는 시스템을 이용하는 사용자를 의미한다. Spring Security는 사용자를 대표하는 org.springframework.security.core.userdetails.UserDetails 인터페이스, 사용자 인증 관련 기능을 제공하는 org.springframework.security.core.userdetails.UserDetailsService 인터페이스를 제공한다. 시스템마다 사용자를 이루는 요소와 방법이 다양하기 때문에 인터페이스로 추상화하고 각자 입맛에 맞게 구현체를 개발하도록 설계되어 있다. 역할(Ro..
@PathVariable @PathVariable 파라메터를 사용하면 아래와 같이 URI의 일부를 변수로 전달할 수 있다. @GetMapping("/bars/{barId}") fun getBar(@PathVariable(value = "barId") barId: Optional) @PathVariable 파라메터는 생략이 불가능하다. 생략할 경우 404 Not Found 오류로 분기된다. 생략을 허용하려면 아래와 같이 생략된 엔드포인트 URI를 추가하면 된다. @GetMapping(value = ["/bars","/bars/{barId}"]) @PathVariable 파라메터 타입으로 Optional을 사용하면 옵셔널 체크를 좀 더 우아하게 표현할 수 있다. [관련 링크]@PathVariable 파라메터..
개요 org.slf4j.MDC 클래스는 애플리케이션의 로그에 담을 정보를 저장할 수 있는 일종의 로그 정보 저장소로 유용하게 사용된다. MDC의 특징은 ThreadLocal에 의해 현재 쓰레드 범위 내에서만 사용할 수 있다는 것인데, 문제는 다른 쓰레드에서 실행되는 비동기 실행시 새로운 MDC 영역을 가지게 되어 호출한 쓰레드와의 연관성을 로그로 남기는 것이 불가능하다는 문제점이 있다. 해결책이 없는 것은 아니다. 비동기 실행시 제공될 쓰레드를 관리하는 org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor에 쓰레드 실행시 MDC를 복제해주는 로직을 삽입하면 된다. 이번 글에서는 이 방법을 설명하고자 한다. 기존 문제점 비동기 쓰레드와 호출한 ..
@Transactional 사용시 주의사항 @Transactional을 클래스 또는 메써드 레벨에 명시하면 해당 메써드 호출시 지정된 트랜잭션이 작동하게 된다. 단, 조건이 있다. 해당 클래스의 Bean을 다른 클래스의 Bean에서 호출할 때만 @Transactional을 인지하고 작동하게 된다. (같은 빈 내에서 @Transactional이 명시된 다른 메써드를 호출해도 작동하지 않는다.) Spring Framework는 내부적으로 AOP를 통해 해당 어노테이션을 인지하여 프록시를 생성하여 트랜잭션을 자동 관리하기 때문이다. [관련 링크1] [관련 링크2] Propagation.REQUIRED (기본 값) @Transactional(propagation = Propagation.REQUIRED) pub..
- Total
- Today
- Yesterday
- 태그를 입력해 주세요.
- 로드바이크
- 알뜰폰
- Tomcat
- Kendo UI
- Kendo UI Web Grid
- JavaScript
- Docker
- CentOS
- Spring MVC 3
- 자전거
- 평속
- kotlin
- node.js
- Spring Boot
- graylog
- DynamoDB
- Eclipse
- maven
- MySQL
- 구동계
- jsp
- spring
- bootstrap
- java
- JHipster
- 로드 바이크
- jstl
- chrome
- jpa
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |