일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- stream
- 조합
- 테스트 코드
- 생성자 주입
- StringBuilder
- cache
- DDL
- DI
- hashcode
- equals
- Spring
- static
- jpa
- Test
- VUE
- SQL
- AOP
- select_type
- java
- KEVISS
- 인덱스
- 열 속성
- 필드 주입
- 바이너리 카운팅
- jwt
- redis
- MSA
- lambda
- docker
- 재정의
- Today
- Total
목록Spring (15)
백엔드 개발자 블로그
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/YJj8S/btsGNanfvs5/wM9Y9Lu6zRkYRap6r2Zfxk/img.gif)
보통 사용자들은 인증으로 구글이나 카카오 로그인을 선호한다. 보안에 대한 신뢰도와 id, pwd를 일일히 기억하기 힘들기 때문이다. 이런 사용자들의 니즈를 파악하고 OAuth2를 사용하여 구글이나 카카오 로그인을 직접 구현해 보면서 글을 적어보았다. 용어 정리 Resource Owner : 개인 정보의 소유자를 말한다 (서비스 사용자) Resource Server : 개인 정보를 저장하고 있는 서버를 의미한다. (구글, 카카오, 네이버) Client : Resource Server로부터 인증을 받고자 하는 서버다. (우리가 개발중인 서비스의 서버) OAuth2 로그인 요청 처리 흐름 Resource Owner가 Client에 접근하기 위해 Resource Server의 로그인 창을 클릭한다. 로그인에 성..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/eDHPCt/btsGNusdTjH/MMN3Nbqc0ZNhjvDkCkDz4K/img.png)
프로젝트를 진행하면서 Spring Security를 활용해서 회원 로그인/로그아웃 처리 과정을 구현 했었다. 당시 시간이 촉박하다는 핑계로 상세하게 들여다보지 않고 로그인이 되는 상세 처리 과정만 이해하고 넘어갔었다. 로그인 과정 로그인 시도 -> username, password 정보를 HTTP body로 전달 인증 관리 -> UserDetailsService에게 username을 전달하고 회원 상세정보를 요청 회원 DB에서 회원 조회 -> 조회된 정보를 UserDetails로 변환 인증 관리자가 인증 처리 -> UserDetailsService가 전달해준 UserDetails의 정보와 클라이언트가 시도한 username,password 일치 여부 확인 UserDetails의 password는 암호문이..
사용자 정의 어노테이션 (Custom Annotation) 사용자가 직접 정의하여 사용하는 어노테이션이다. 프레임워크나 API 등을 만들어 사용할 때 주로 사용한다. 사용자 정의 어노테이션 정의 사용자 정의 어노테이션을 사용하기 위해 @interface를 통해 어노테이션 클래스를 작성할 수 있다. 어노테이션은 내부에 값을 가질 수 있으며, 값을 설정할 수 있다. 값을 설정하기 위해서는 default 값 형태로 설정한다. import java.lang.annotation.*; // 메타 어노테이션을 활용하여 사용자 정의 어노테이션 선언 @Target(ElementType.TYPE) // 어노테이션 적용 대상 Type으로 설정 @Retention(RetentionPolicy.RUNTIME) // 런타임 시까..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bRk3a0/btsB7RZmuvJ/F10KTcKh2dPRADMk9qsNRk/img.png)
AOP 시작하기 먼저 AOP는 스프링의 특성이기 때문에 스프링 프로젝트를 준비하고, build.gradle 파일에 의존성을 추가해줍니다. implementation 'org.springframework.boot:spring-boot-starter-aop' 먼저 AOP를 사용하기 위해서는 다음과 같은 Annotation들을 알아야 합니다. @Aspect AOP로 정의하는 클래스를 지정함 @Pointcut AOP기능을 메소드, Annotation 등 어디에 적용시킬지 지점을 설정 지점을 설정하기 위한 수식들이 매우 많음 @Before 메소드 실행하기 이전 @After 메소드가 성공적으로 실행 후 (예외 발생 되더라도 실행 됨) @AfterReturning 메소드가 정상적으로 종료될때 @AfterThrowin..