본문 바로가기
반응형

Back/Spring10

[Spring] Bean 📌 Spring Bean객체를 다루는 일반적인 방법은 프로그래머가 프로그램 로직 상 필요한 객체를 그 때 그 때 생성하고 필요한 메서드를 호출하는 것이다. 만약 다루는 언어가 자바라면 new 키워드를 통해 필요한 곳에 인스턴스를 생성하는 로직을 넣을 것이다. 하지만 스프링에서는 클래스들의 인스턴스(객체)를 일일이 프로그래머가 다루는 것이 아니고 스프링에게 관리를 맡기게 된다. 이것이 스프링의 주요 특징 중 하나인 IoC(Inversion of Control)이다.IoC(Inversion of Control) : 제어의 역전, 객체를 개발자가 아닌 외부(스프링 컨테이너)에서 생성, 관리 이 때, 스프링이 객체들을 미리 생성해 관리하는 공간을 스프링 컨테이너라고 하며, 이렇게 스프링에 의해 생성되고 관리되는.. 2023. 7. 19.
[Spring/Security] JWT (JSON Web Token) 📌 JWT (JSON Web Token) ✔ JWT 란? JWT는 당사자간에 정보를 JSON 객체로 안전하게 전송하기 위한 컴팩트하고 독립적인 방식을 정의 하는 개방형 표준이다. 이 정보는 디지털 서명이 되어 있으므로 확인하고 신뢰할 수 있다. JWT 는 비밀(HMAC 알고리즘 사용) 또는 RSA 또는 ECDSA를 사용하는 공개/개인키 깡을 사용하여 서명할 수 있다. JWT를 암호화하여 당사자 간에 비밀성을 제공할 수도 있지만 여기서는 서명된 토큰에 중점을 둘 것이다. 서명된 토큰은 그 안에 포함된 정보, 요구사항 등의 무결성을 확인할 수 있는 반면 암호화된 토큰은 다른 당사자로부터 해당 클레임을 숨긴다 . 공개/개인 키 쌍을 사용하여 토큰에 서명할 때 서명은 개인 키를 보유한 당사자만이 서명한 당사자임.. 2023. 6. 26.
[Spring/Security] Authentication 객체가 가질 수 있는 2가지 타입 📌 Authentication 객체가 가질 수 있는 2가지 타입 ◽ 구글 로그인 버튼 클릭 → 구글 로그인창 → 로그인 완료 → code 리턴(OAuth-Client 라이브러리) → AccessToken 요청 ◽ userRequest 정보 → loadUser 함수 호출 → 회원 프로필을 구글로 부터 받음 ✔ Controller @GetMapping("/test/login") public @ResponseBody String testLogin( Authentication authentication, @AuthenticationPrincipal PrincipalDetails userDetails) { // DI(의존성주입) PrincipalDetails principalDetails = (PrincipalD.. 2023. 6. 23.
[Spring/Security] 구글 회원 프로필 정보 받아오기 📌 구글 회원 프로필 정보 받아오기 ✔ 구글 로그인이 완료된 뒤의 후처리 1) 코드받기 (인증) 2) 액세스토큰 (권한) - 액세스 토큰을 받으면 Security 서버가 구글에 로그인한 사용자의 정보에 접근할 수 있는 권한이 생긴다. 3) 사용자 프로필 정보를 가져옴 4) 회원가입 4-1) 그 정보를 토대로 회원가입을 자동으로 진행시킴 4-2) 이메일, 전화번호, 이름, 아이디, 집 주소 등의 추가적인 정보를 입력하는 창이 뜸 ➕ 구글 로그인이 완료가 되면 코드를 받는 것이 아니라, 엑세스토큰 + 사용자 프로필 정보를 한 방에 받는다. ◽ SecurityConfig.java SecurityConfig.java 에 위와 같이 추가해 준다. 아직 아무 것도 만들어지지 않았기 때문에 null을 임시로 넣어둔다.. 2023. 6. 23.
[Spring/Security] 구글 로그인 준비 📌 구글 로그인 ✔ Google Api Console 접속 https://console.cloud.google.com Google 클라우드 플랫폼 로그인 Google 클라우드 플랫폼으로 이동 accounts.google.com ◽ 새로운 프로젝트 만들기 ① 프로젝트를 만들기 위해 새 프로젝트를 클릭한다. ② 프로젝트의 이름을 설정한 뒤, 만들기 버튼을 클릭한다. ③ 프로젝트 생성 확인 그럼 이렇게 프로젝트가 생성된 것을 볼 수 있다. ④ API 및 서비스 > OAuth 동의 화면 User Type 은 외부로 선택하고, 애플리케이션 이름을 설정한 후 저장한다. ⑤ 사용자 인증 정보 + 사용자 인증 정보 만들기 클릭 OAuth 클라이언트 ID 클릭 애플리케이션 유형 -> 웹 애플리케이션 클릭 이름 설정 후,.. 2023. 6. 23.
[Spring] 스프링 AOP - 포인트컷 / 포인트컷 지시자의 종류 / execution / @target / @within ✔ 포인트컷 지시자 포인트컷 표현식은 execution 같은 포인트컷 지시자(Pointcut Designator)로 시작한다. (줄여서 PCD) ◽ 포인트컷 지시자의 종류 • execution : 메소드 실행 조인 포인트를 매칭한다. 스프링 AOP에서 가장 많이 사용하고, 기능도 복잡하다. • within : 특정 타입 내의 조인 포인트를 매칭한다. • args : 인자가 주어진 타입의 인스턴스인 조인 포인트 • this : 스프링 빈 객체 (스프링 AOP 프록시)를 대상으로 하는 조인 포인트 • target : Target 객체(스프링 AOP 프록시가 가르키는 실제 대상)를 대상으로 하는 조인 포인트 • @target : 실행 객체의 클래스에 주어진 타입의 애노테이션이 있는 조인 포인트 • @withi.. 2023. 5. 25.
[Spring] 예제 프로젝트 만들기 - 상품 주문 프로세스 ✔ 예제 프로젝트 만들기 : 상품을 주문하는 프로세스 / Controller → Service → Repository ◽ advanced > app > v0 > OrderRepositoryV0 package hello.advanced.app.v0; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; @Repository @RequiredArgsConstructor public class OrderRepositoryV0 { public void save(String itemId) { // 저장 로직 if (itemId.equals("ex")) { // 상품의 아이디가 "ex" 로 넘어오면 throw .. 2023. 5. 22.
[Spring] 회원 관리 (2) - 서비스 개발 / test ✔ 회원 서비스 개발 hello.hellospring > service > MemberService - 회원가입기능 package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import hello.hellospring.repository.MemoryMemberRepository; public class MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); // 회원가입 public Long join(Member mem.. 2023. 4. 28.
[Spring] 회원 관리 (1) - repository / Test case ✔ 비즈니스 요구사항 정리 • 데이터: 회원ID, 이름 • 기능: 회원 등록, 조회 • 아직 데이터 저장소가 선정되지 않음 (가상의 시나리오) ➕ 일반적인 웹 애플리케이션 구조 • 컨트롤러 : 웹 MVC의 컨트롤러 역할 • 서비스 : 핵심 비즈니스 로직 구현 • 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 • 도메인 : 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 데이터베이스에 저장하고 관리됨 ✔ 회원 도메인과 리포지토리 만들기 domain > Member package hello.hellospring.domain; public class Member { private Long id; // 시스템이 저장하는 아이디 private String name; // 회원 이름 .. 2023. 4. 28.
[Spring] 스프링 웹 개발 기초 ✔ 프로젝트 생성 https://start.spring.io/ 인텔리제이에서 advanced > build.gradle 파일을 연 후, 실행시키고 http://localhost:8080/ 을 확인한다. 이 화면 뜨면 성공 설정 > gradle 입력 > Build and run using, Run tests using 을 intelliJ IDEA로 바꾸기 ✔ 정적 컨텐츠 static > hello-static.html 정적 컨텐츠 입니다. 2023. 4. 27.
반응형