OAuth2.0 📌 정의 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. 📌 용어 Resource Server : OAuth2.0 서비스를 제공하고 자원을 관리하는 서버(NAVER, GOOGLE) Resource Owner : Resource Server 계정을 가지고 있는 개인 Client : Resource Server에 접근하는 웹사이트 또는 애플리케이션. Client → Resource Server API로 Resource Owner 정보 요청. Authorization Server : Client가 Resource Server의 서비스를 사용..
클라이언트가 서버에 요청하면 응답을 보낸 후 연결을 끊고, 주고받은 데이터나 상태정보를 저장하지 않는다. 그러나 정보를 유지해야 할 필요가 있을 때가 있다.(로그인 등등) 이를 위해 쿠키와 세션을 이용한다. 세션 클라이언트와 웹서버 간 네트워크 연결이 지속되고 있는 상태를 의미한다. 1. 클라이언트가 서버에 접근하면 클라이언트에게 Response의 set-cookie 값으로 sessionId를 발행한다. 2. sessionId는 서버와 클라이언트 메모리에 저장된다 (JSESSIONID). 3. 클라이언트는 다시 접속시 요청에 JSESSIONID 쿠키를 사용해서 세션ID를 서버에 전달한다. 쿠키 클라이언트 상태정보를 담은 파일로 클라이언트의 메모리에 저장한다. 1. 클라이언트가 서버에 접속하면 서버는 쿠키..

assertSame()과 assertEquals() - assertSame은 참조형(객체), assertEquals는 기본형(값)을 비교해야할 때 사용한다. Mock 관련 어노테이션 - 객체간의 의존성에 관계 없이 테스트를 할 수 있도록 만드는 가짜 객체를 mock이라고 한다. - @Mock : mock 객체를 만들어 반환해주는 어노테이션 - @MockBean : Bean이 Container에 존재해야하는데 이를 mock으로 설정할 때 사용. - Stub : 어떤 메소드를 실행할 때는 이렇게 동작한다고 설정하는 것 ( return 값 설정, throw할 예외 설정 등) - @Spy : Stub 하지 않은 메소드들은 메소드 그대로 사용하는 어노테이션. Stub한 메소드는 설정한대로 실행 - @InjectM..
HTTP 요청 DispatcherServlet HandlerMapping이 해당 요청을 처리할 핸들러를 찾는다. RequestMappingHandlerMapping : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용한다. BeanNameUrlHandlerMapping : 스프링 빈 이름으로 핸들러를 찾는다. 핸들러를 호출할 HandlerAdpater를 찾는다. RequestMappingHandlerAdapter : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용한다. SimpleControllerHanderAdpater : Controller 인터페이스 구현한 핸들러 처리 HttpRequestHandlerAdapter : HttpRequestHandler 인터페이스를 ..

클래스에는 필수로 받아야 하는 매개변수, 선택적으로 받아야 하는 매개변수가 있다. 보통 클래스를 설계할 때 사용하는 방법은 2가지가 있다. ✔ 점층적 생성자 패턴 사용하기 ▷ 선택적으로 받는 매개변수가 없는 생성자 ~ 매개변수를 전부 받는 생성자로 늘려나가는 방식 단점 매개변수가 많아질 수록 생성자 수가 늘어난다 매개변수가 많기 때문에 new 로 생성할 때 실수를 할 가능성이 높아진다. 가독성이 떨어진다. ✔ 자바 빈즈 패턴 사용하기 ▷ getter / setter 메소드로 매개변수 값 세팅 단점 코드량이 늘어난다. 어디에서든 객체의 매개변수 값을 수정할 수 있다. 객체의 불변성이 깨지게 되는 것이다. 👏 빌더 패턴 사용하기 ▷ 위의 패턴들의 장점들을 섞었다. 매개변수 값을 자바 빈즈 패턴처럼 받지만, ..
@SessionAttributes와 SessionStatus 서블릿은 기본적으로 상태를 유지하지 않는다. 도메인 오브젝트로 사용자 정보를 수정하기 사용자 정보는 사용자가 수정할 수 없는 데이터와 수정할 수 있는 데이터가 있다. 수정하면 안되는 정보는 form에 보여주지 않는 것이 좋다. form submit으로 수정할 때 고객이 수정하지 못하는 데이터는 null, 0으로 전달될 가능성이 있다. 히든 필드 사용해서 해결 사용자가 수정하면 안되는 정보는 hidden 필드에 넣는다. 데이터 보안에 문제를 일으킨다. (html에서 조작할 수 있다.) 새로운 필드가 추가될 때 히든 필드도 추가해야한다. 실수할 가능성이 높아진다. DB 재조회하기 수정된 정보를 받아 도메인 객체에 넣어줄 때 DB에서 데이터를 다시 ..
@MVC 애노테이션을 중심으로 한 새로운 MVC의 확장 기능 @RequestMapping 핸들러 매핑 DefaultAnnotationHandlerMapping 빈을 등록해야한다. 매핑정보로 @RequestMapping 애노테이션을 활용한다. 타입 레벨에 @RequestMapping을 이용해서 타입 내의 매핑 메소드의 공통 조건(url)을 지정할 수 있다. @Controller를 사용하면 클래스 레벨에서는 @RequestMapping을 생략할 수 있다. @RequestMapping 정보는 상속되지만 서브 클래스에서 재정의 하면 슈퍼 클래스의 정보는 무시된다. 속성 value() URL 패턴 지정, 와일드 카드를 사용할 수 있다. {}로 PATH VARIABLE 지정할 수 있다. method() 요청 메소드..
기타 리졸버 핸들러 예외 리졸버 HandlerExceptionResolver : 컨트롤러 작업 중 발생한 예외를 어떻게 처리할지를 결정하는 전략. 예외 발생 > 핸들러 예외 리졸버 확인 > 있으면 핸들러 예외 리졸버가 처리, 아니면 서블릿 컨테이너가 처리 AnnotationMethodHandlerExcpetionResolver : @ExceptionHandler 애노테이션이 붙은 메소드가 예외처리한다. 특정 컨트롤러 작업 중 발생하는 예외를 처리하는 핸들러를 만들 때 유용하다. ResponseStatusExceptionResolver : 예외를 특정 HTTP 응답 상태로 전환해준다. DefaultHandlerExceptionResolver : 스프링에서 내부적으로 발생하는 주요 예외를 처리. Simple..
- Total
- Today
- Yesterday
- Java
- spring boot
- 고아 객체
- DataAnnotation
- orphanRemoval
- 스프링MVC
- 자바의 정석
- default interface
- Spring
- SpringBoot
- 준영속
- Effective Java
- 영속성
- @Modifying
- uploadfive
- 다이내믹 프록시
- 빌더 패턴
- 스프링
- c#
- 스프링 부트 테스트
- MSSQL
- JpaRepository
- 토비의 스프링
- JavaScript
- JPA
- Nullable
- C# 문법
- ASP.NET
- OWIN
- jQuery
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |