본문 바로가기
728x90

Spring Boot 개념 정리27

spring.security.oauth2.client.registration.google.scope=profile,email spring.security.oauth2.client.registration.google.client-id=클라이언트_id spring.security.oauth2.client.registration.google.client-secret=클라이언트 보안 비밀 spring.security.oauth2.client.registration.google.scope=profile,email application-oauth.properties 파일에 위 코드에서 scope 부분에 profile, email만 기재하는 이유는? 기본값 자체를 openid, profile, email 이 3개를 등록해놨는데 openid의 경우 scope에 기재하면 open id provider라고 인식 그렇게 되면 open id pro.. 2023. 9. 6.
의존성 주입(DI) 정리 및 후기 필드 주입 @Controller Public class Controller{ @Autowired private Service service; } 코드가 간결하지만 외부 변경 불가 테스트하기 어렵다. final을 못 쓴다. DI에 지나친 의존성 수정자 주입 @Controller Public class Controller{ private Service service; @Autowired public void setController(Service service){ this.service = service; } } 선택, 변경 가능성이 있는 의존관계 객체가 변경될 필요성이 있을 때만 사용 생성자 주입 @Controller Public class Controller{ @Autowired private Servi.. 2023. 9. 1.
생성자 어노테이션에 대해 알아보자(ex. @NoArgsConstructor) @AllArgsContructor class에서 선언된 모든 변수를 설정해주는 생성자 자동 생성 @AllArgsContructor public class Member{ private final Long idx; @notNull String phone; String etc; } //위 어노테이션을 통해 다음과 같은 생성자를 직접 만들어 주지 않아도 생성. public Member(Long idx, String phone, String etc){ this.idx = idx; this.phone = phone; this.etc = etc; } @NoArgsContructor 기본 생성자를 만드는 annotation @NoArgsContructor public class Member{ private final .. 2023. 9. 1.
JPA Entity에서 @Setter 사용을 지양하는 이유? @Setter을 사용할 경우 사용 의도/목적이 불분명하다.(Insert 인지 Update 인지) 변수의 값을 Set 하는 과정에서 이 행위 자체가 insert를 위한 동작인지 update를 위한 동작인지 불분명하다. book.setTitle("JPA 사용법"); book.setContent("JPA의 구현체"); book.setNum("12") 위 코드를 보면 이게.. 인스턴스를 새로 만드는건가..? 아님 기존에 있던 값을 변경하려는 건가..? 싶을 것이다. 건들면 안되는 값을 건들 수 있다. (by. 착오) setter 메서드는 public으로 선언하기에 메서드 사용이 자유롭다. 그렇기에 의도하지 않은 곳에서 접근하여 값을 재 설정하거나 하면 일관성이 깨지는 문제가 발생. setter 대신 생성자에 @.. 2023. 9. 1.
JWT 개념 정리 인증과 인가 인증(Authentication)은 로그인 인가(Authorization)는 로그인으로 인증하고 나서 유지되는 상태에서 일어나는 일(글 작성 등) JWT 개념 JWT는 인가에 관련된 기술이다. 세션 처럼 서버에 데이터 일부를 놓고 사용자에게 넘기는 것이 아니라 서버에 저장시키지 않고 사용자에게 온전히 넘긴다. 해당 토큰의 형식은 xxxxx.yyyyy.zzzzz x는 1번 헤더 type: JWT 고정값 alg: 알고리즘의 약자, 서명값을 만드는데 사용되는 알고리즘 지정 ex) HS256 y는 2번 페이로드 Base 64로 디코딩 해보면 JSON 형식으로 여러 정보들이 들어있다. 이 토큰을 누가 누구에게 발급했는지 언제까지 유효한지 공개하기 원하는 내용 z는 3번 서명 토큰에 담긴 사용자 정보등.. 2023. 3. 26.
빈 스코프 핵심 내용 이해하기 빈 스코프란 무엇인가? '빈이 사용되어지는 범위' 라는 의미. 앱이 구동되는 동안 빈을 한개만 만들어서 쓸지, http 요청마다 생성해서 사용할지를 결정하는 것이다. 스프링 앱이 구동되고 ApplicatiionContext에서 생성되어 하나의 클래스는 하나의 Bean만 가진다. 이를 Singleton이라고 한다. 경우에 따라서 http 요청마다 다른 빈을 생성해서 사용할지 - Request 매번 사용할 때마다 새로운 Bean을 생성해서 사용할지 - Prototype 다양한 빈 스코프가 존재한다. Singleton 빈 안에 있는 Prototype 빈은 처음 주입된 채로 그대로 사용됨 ProtoType 빈은 사용시 마다 새로운 객체를 만들어서 사용할 용도로 존재하는데 Singleton Bean의 특성에 의해.. 2023. 2. 19.
728x90