💻 Backend 82

[Spring Security] 스프링 시큐리티 용어 및 구조

스프링 시큐리티 - 어플리케이션의 보안(인증 및 권한)을 담당하는 프레임워크 - 스프링 시큐리티를 적용하면 redirect를 자동으로 설정 가능(로그인 완료시 다음 화면으로 넘어가기) 특징 - 필터 기반으로 동작 - bean으로 설정 가능 용어 1. Principal(인증 주체): 유저 2. Authenticate(인증): 현재 유저가 누구인지 확인(로그인) 3. Authorize(인가): 현재 유저의 권한 검사 4. 권한: 인증 주체가 어플리케이션의 동작을 수행할 수 있도록 허락 되었는지 확인 - 권한 승인이 필요한 부분으로 접근하려면 인증(로그인)을 통해 증명되어야 함 인증(로그인)을 거치게 되면 인증 주체에 대한 정보는 Principal에 담긴다. (Principal은 UserDetailsServi..

TIL - 2022/04/02 스프링

[한 것] 모아모아 사이드 프로젝트 소셜 로그인 리팩토링 [배운 것] 스프링 시큐리티의 구조를 공부하였음. https://twer.tistory.com/entry/Security-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0%EC%9D%98-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98%EA%B5%AC%EC%A1%B0-%EB%B0%8F-%ED%9D%90%EB%A6%84 [Security] 스프링 시큐리티의 아키텍처(구조) 및 흐름 Spring Security 스프링 시큐리티리란? 어플리케이션의 보안(인증 및 권한)을 담당하는 프레임워크 Spring Security를 사용하지 않으면 자체적으로 세션을 체크해야 한다. ..

💻 Backend/TIL 2022.04.03

스프링으로 AOP 구현해보기 - 4가지 구현 관점

스프링에서는 4가지 보조 업무가 존재한다. Before Advice: 앞에만 필요한 경우 After returnning Advice: 뒤에만 필요한 경우 After throwing Advice: 예외를 처리하는 경우 Around Advice: 앞뒤 둘다 필요한 경우 public class Program { public static void main(string[] args) { Exam exam = new NewlecExam(1,1,1,1); Exam proxy = (Exam)Proxy.newProxyInstance(newlecExam.class, new Class[] {Exam.class}, new InvocationHandler() { @Override public Object invoke(Objec..

자바 AOP 예제 정리 - 순수 자바로 AOP 구현해보기

https://www.youtube.com/watch?v=pr2dwdf_03k public class NewlecExam implements Exam { @Override public int total() { int result = a1+a2+a3+a4; return result; } @Override public float avg() { float result = total() / 4.0f; return result; } } Exam.class를 상속받은 newlecExam.class public class Program { public static void main(string[] args) { Exam exam = new NewlecExam(1,1,1,1); System.out.printf("tot..

스프링 AOP 정리 - 스프링 핵심 원리 - 고급편

1.1 핵심 기능과 부가 기능 비지니스 로직은 크게 핵심 기능과 부가 기능으로 구분 가능 핵심 기능은 해당 객체가 제공하는 고유의 기능이고 부가 기능은 핵심 기능을 보조하기 위해 제공하는 기능 부가 기능의 대표적인 예시는 트랜잭션 기능, 로그 추적 기능이 있음. 이들은 공통으로 사용되며 여러 곳에서 동일하게 사용되기 때문 -> 횡단 관심사(cross-cutting concerns)라고 함. 옛날에는 주 업무가 진행되는 과정에서 내가 로그를 처리하겠다면, 직접 코드를 열어서 위 아래에 코드 입력하고, 주석 처리하고 실제 코드를 손대야 함. -> 그래서 소스코드가 존재해야 수정 가능 코드에 대해 알 수 있는 사람만 cross cutting이 가능하다. 관점에 해당하는 코드를 꽂아 놓지 않고 주 업무만 만들고..

ApplicationContext 정리 - 스프링 핵심원리 기본편

//스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext 를 스프링 컨테이너라 한다. ApplicationContext 는 인터페이스이다. 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. 직전에 AppConfig 를 사용했던 방식이 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만든 것 이 클래스는 ApplicationContext 인터페이스의 구현체이다. 스프링 컨테이너의 생성 과정 1. 스프링 컨테이너 생성 2. 스프링 빈 등록 3. 스프링 빈 의존관계 설정 - ..

빈 생명주기 콜백 - 스프링 핵심원리 기본편

빈 생명주기 콜백 시작 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면 객체의 초기화와 종료가 필요함. 간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정하자. 이 NetworkClient는 애플리케이션 시작 시점에 connect()를 호출해서 연결을 맺어두어야 하고, 애플리케이션이 종료되면 disconnect()를 호출해서 연결을 끊어야 한다. package hello.core.lifecycle; public class NetworkClient { private String url; public NetworkClient() { System.out.println("생성자 호..

TIL 2022-03-07 / 스프링

[한 것] 자바 표준 ORM JPA 프로그래밍 1강 듣기 완료 [배운 것] JPA의 개요와 역사에 대해서 알게 되었음. JPA의 장점 1. 같은 트랜잭션 안에서는 같은 엔티티를 반환 - 약간의 조회 성능 향상 2. DB Isolation Level이 Read Commit이어도, 애플리케이션에서 Repeatable Read 보장 트랜잭션을 지원하는 쓰기 지연 - INSERT 1. 트랜잭션을 커밋할 때까지 INSERT SQL을 모음 2. JDBC BATCH SQL 기능을 사용해서 한번에 SQL 전송 [느낀점] 뭐든지 도전하는 것이 좋은 듯 하다. [할 것] 객체지향의 사실과 오해 7장 읽고 정리하기 토이 프로젝트 리팩토링 전문가를 위한 스프링 스터디 준비하기

💻 Backend/TIL 2022.03.07

TIL / 2022-03-03 스프링

[한 것] 해커톤 서버 템플릿 일부 수정 토이 프로젝트 팔로우 부분 API 추가 및 리팩토링 객체지향의 사실과 오해 부분 4장 정리 [배운 것] https://stackoverflow.com/questions/18987292/spring-crudrepository-findbyinventoryidslistlong-inventoryidlist-equivalen Spring CrudRepository findByInventoryIds(List inventoryIdList) - equivalent to IN clause In Spring CrudRepository, do we have support for "IN clause" for a field? ie something similar to the follow..

💻 Backend/TIL 2022.03.04

TIL / 2022-03-02 스프링

[한 것] 유니톤 서버 템플릿 제작 완료 토이 프로젝트 API 추가 및 리팩토링 자산관리 서비스 서브 프로젝트 회의 완료 [배운 것] https://congsong.tistory.com/53 https://jeong-pro.tistory.com/195 @ControllerAdvice, @ExceptionHandler를 이용한 예외처리 분리, 통합하기(Spring에서 예외 관리하는 방법, 실 예외 처리 과정 프로그래밍에서 예외 처리는 아주 중요하면서도 아주 어렵다. 과하다할 만큼 상세하고 다양하게 예외를 잡아 처리해준다면, 클라이언트도 그렇고 서버도 그렇고 더 안정적인 프 jeong-pro.tistory.com 스프링 부트(Spring Boot) JPA 게시판 - 전역 예외 처리(Global Excepti..

💻 Backend/TIL 2022.03.03