일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링시큐리티
- 티스토리챌린지
- 오블완
- 트랜잭션
- Spring
- 토이프로젝트
- 스프링
- 액세스토큰
- oauth2
- 프로그래머스
- springsecurityoauth2client
- githubactions
- AWS
- 백준
- 도커
- springsecurity
- 소셜로그인
- docker
- yaml-resource-bundle
- 재갱신
- 스프링부트
- 리프레시토큰
- CI/CD
- JIRA
- 국제화
- java
- 파이썬
- springdataredis
- 메시지
- 데이터베이스
- Today
- Total
목록Spring (14)
땃쥐네
1. 의문점 @GetMapping("user") fun user(authentication: Authentication): OAuth2User { val token = authentication as OAuth2AuthenticationToken val user = token.principal return user } 스프링 시큐리티를 사용할 때, Authentication 객체를 컨트롤러에서 바로 바인딩받아 사용할 수 있다.그런데 이 Authentication 객체는 어떻게 주입되는걸까? 2. 디버거로 찾기: 어느 HandlerMethodArguemntResolver가 작동했을까? 컨트롤러의 파라미터 바인딩 동작 확인은 어떤 HandlerMetho..
자바, 순수 코틀린 문법을 사용하다보면 스프링 시큐리티 필터체인을 작성할 때 다음과 같이 작성해야한다. @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests((authorize) -> authorize .requestMatchers("/login").permitAll() .anyRequest().authenticated() ); return http.build(); } 물론 이것도 괜찮긴 한데... 람다 표현식을 체이닝을 통해 넣어주는 식이기도 하고 가독성이 썩 좋지는 않다.import org.springframework.se..
dependencies { // spring security implementation("org.springframework.boot:spring-boot-starter-security") testImplementation("org.springframework.security:spring-security-test") } gradle의 경우 buiild.gradle 또는 build.gradle.kts maven의 경우 pom.xml 파일에 스프링부트 시큐리티 의존성을 추가 해보면 여러가지 일들이 일어난다. 이를 가장 정확히 설명하는 문서는 스프링 시큐리티의 공식 문서의 getting-started - Runtime Expectations 단락에 있다. 여기선 간단하게 당장 개발하면서 체감할 수 있는 내용만..
팀프로젝트 진행 과정에서, 단위 테스트는 통과했으나 실제 API를 통해 전체적으로 잘 작동되는지 확인했을 때 예외가 터지는 부분이 발생해서 삽질을 하게 됐습니다. 저희 프로젝트에서는 '여행 일정 관리 서비스'를 구현하고 있습니다. 사용자(여행자, Tripper)는 여러개의 여행(Trip)을 가질 수 있고, 여행(Trip)은 여러 개의 연속된 여행일(Day)를 가질 수 있으며, 여행일에는 여러 개의 일정(Schedule)들을 가질 수 있습니다. 어떤 여행일(Day)에도 속하지 않은 일정들은 Trip의 임시보관함(TemporaryStorage)에 속한 일정들로 간주하고 있습니다. 일정을 생성하는 과정에는 tripId, dayId 라는 필드를 전달함으로서 어느 Trip의 어느 Day에 생성할지 지정할 수 있습..
마이크로 서비스 아키텍쳐(MSA, MicroService Architecture)에 흥미가 생겨서 Spring Cloud를 학습하기 시작했습니다. DevOps의 철학 이해 및 실천에 있어서 MSA 학습은 좋은 경험이라는 생각이 들었습니다. 물론 MSA를 개인 프로젝트에 적용한다거나, 어디 가서 사용할 수 있는 기술 스택이라고 말하기엔 문제가 많을 듯하고 그저 경험으로만 삼기 위해 학습합니다. 생각 이상으로 고려할게 정말 많더라구요. 분산 트랜잭션 처리, Kafka, Jenkins와 같은 CI/CD 툴, ... 등등을 학습해야하는데 이것까지 너무 깊게 들어가면 취준생으로서 소모할 시간이 너무 늘어나게 되니까요. 이번 글에서는 Service Discovery, Gateway를 사용하여 간단한 마이크로서비스 ..
이전 글들에서 커넥션이란 무엇이고 커넥션을 어떻게 획득하는 지(datasource), 트랜잭션이란 무엇이고 왜 필요한 지 등을 한번씩 살펴봤습니다. - [Spring DB] 커넥션과 DataSource - [Spring DB] 순수 JDBC 기술로 CRUD - [Spring DB] 커넥션 풀을 통한 커넥션 획득 - [DataBase] 트랜잭션 및 트랜잭션의 4대 특성(ACID) 이전 글까지는 WAS 측에서의 커넥션을 살펴봤다면 이제 반대쪽 DB 입장에서의 커넥션을 살펴보고, 커넥션과 트랜잭션의 관계를 확인해봅시다. 커넥션, DB 세션, 트랜잭션 WAS와 DB가 커넥션을 맺으면 DB측에서는 '데이터베이스 세션'이란 것을 생성하게 됩니다. 이제 모든 커넥션을 통한 데이터베이스 조작 요청, 조회 요청, 트랜잭..
커넥션과 DataSource 해당 내용은 [Spring DB] 커넥션과 DataSource 에서 다뤘습니다. 간단하게 다시 정리해보겠습니다. 커넥션(Connection) 커넥션의 FQCN(Fully Qualified Class Name, 패키지를 포함하여 타입의 전체 이름)은 java.sql.connection 인터페이스로서, DBMS와의 물리적 연결을 추상화한 계층입니다. 데이터베이스 Driver를 통해 DB와 연결 후 그 연결정보를 담아 생성되는데 이 커넥션을 통해 우리는 DB에 SQL을 전달해 질의할 수 있습니다. DataSource(DataSource) java는 커넥션을 획득하는 방법을 DataSource 인터페이스로 표준화했습니다. 커넥션을 매번 획득하는 방식(DriveManager, Driv..
이전 글 - [Spring DB] 커넥션과 DataSource 이 글은 위의 글에서 이어집니다. 프로젝트 설정 ```groovy dependencies { implementation 'org.springframework.boot:spring-boot-starter-jdbc' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' // test에서 Lombok 사용 testCompileOnly 'org.projectlombok:..