본문 바로가기

Web34

[Security] Spring Security (1) ✍️ 학습 목표 Spring Security란? Architecture 이해하기 📌 Spring Security 스프링 프레임워크에서 보안(인증, 인가)을 담당하는 스프링 하위 프레임워크이다. 시큐리티를 공부하기 위해 짚고갈 용어들이 존재한다. 🔒 보안 용어 Authentication, 인증 : 애플리케이션을 접근하는 사람이 누구인지 확인하는 절차 Authorization, 인가 : 확인된 사용자의 권한을 확인하고 부여하는 절차 Principal, 접근 주체 : 접근하려는 대상 Credential, 자격증명 : 비밀번호, 열쇠와 같은 인증을 위한 키 정리하면 스프링 시큐리티는 보호된 리소스에 접근하는 대상이 '누구'인지 확인해주고 그 '누구'에게 부여된 권한에 맞게 기능들을 이용할 수 있게 한다. ✔️ .. 2022. 10. 5.
[Spring] AOP (feat. Proxy Pattern) ✍️ 학습 목표 AOP 이해하기 프록시 패턴이란? 📌 AOP Spring의 핵심 전략 중 하나인 AOP는 Aspect Oriented Programming의 약자이다. AOP은 횡단 관심사의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다. 위키백과에서 가져온 정의는 역시 전혀 와닿지 않는다. 그림으로 이해해보자. 🧷 Before AOP 위 그림을 보면 각 클래스들은 중복되는 부분을 가지고 있다. 이렇게 구현하면 A 클래스에 구현된 주황색 코드를 수정하게 된다면 클래스 B, C에 구현된 모든 코드를 수정해야 한다. 당연히 중복된 모든 코드를 수정하기 힘들 것이고 나아가 유지보수도 힘들 것이다. 🧷 After AOP AOP를 적용하게 된다면 다음과 같이 중복된 코드를 모듈화하여 .. 2022. 9. 21.
[Spring] Servlet, 서블릿 ✍️ 학습 목표 Servlet 이해하기 Servlet Container 알아보기 📌 Servlet MVC 패턴에서 사용되는 Controller는 Servlet을 활용한 기술이다. 따라서 MVC 패턴을 준수하는 스프링 공부하기 위해선 Servlet에 대한 이해도 필수적이다. Servlet이란? 클라이언트의 요청을 처리하고, 처리 결과로 반환해주는 Java 기반의 CGI이다. CGI : 웹 서버 상에서 User Program을 동작시키기 위한 조합 ✔️ Servlet의 특징 결국 Servlet은 기존 웹 서버의 문제를 개선하고 동적인 여러 기능을 지원한다. 너무 기계적으로 적어둔 글이 많아서 핵심만 요약했고, 내용은 다음과 같다. 클라이언트의 요청에 대해 정적으로 작동하던 기존의 웹 프로그램의 문제점을 보완.. 2022. 9. 15.
[Spring] Spring의 MVC ✍️ 학습 목표 MVC 패턴 이해하기 Spring의 MVC 📌 MVC 패턴 스프링은 MVC 패턴을 준수하는 프레임워크이다. 따라서, 스프링의 MVC 패턴을 이해하기 위해서는 먼저 MVC 패턴이 무엇인지 알아야한다. MVC (Model - View - Controller) 패턴은 소프트웨어 공학에서 사용되는 디자인 패턴이다. 이렇게 각자의 규칙과 역할을 가진 3개의 컴포넌트로 구성된 패턴을 MVC 패턴이라고 한다. ✔️ 모델, Model 애플리케이션의 정보, 데이터, DB 등을 담당하는 컴포넌트이다. 다음과 같은 규칙을 가진다. User가 원하는 모든 데이터를 가지고 있어야한다. View와 Controller에 대한 어떠한 정보도 알지 말아야한다. 변경이 발생하면 변경사항을 처리(수정, 전달 등) 할 수 .. 2022. 9. 14.
[Spring] Spring의 DB 접근 기술 ✍️ 학습 목표 JDBC Spring JdbcTemplate JPA Spring Data JPA 📌 JDBC JDBC란? Java Database Connectiviy의 약자로 Java 환경에서 DB에 접근하기 위한 표준 API이다. 스프링과 독립적이며 DBMS의 종류와 상관없이 하나의 JDBC API를 이용해서 데이터베이스 작업을 처리한다. ✔️ 등장 배경 및 특징 JDBC 이전에는 데이터베이스 종류에 따라 다른 SQL문을 사용해야 했다. JDBC가 등장하면서 데이터베이스마다 다른 메서드나 전역 변수 등을 통일하는 문법을 만들어 사용할 수 있게 해주었다. 코드가 길고 쿼리문을 직접 작성해야 하는 번거로움이 있으며 예외 처리를 위한 복잡한 try-catch 문을 사용해서 현재는 많이 사용하지 않는다. 📌.. 2022. 8. 23.
[Spring] Spring의 핵심 : IoC, DI (23.05.16 updated) ✍️ 학습 목표 IoC DI 📌 IoC (Inversion of Control) IoC란? Inversion of Control의 약자로 단어 그대로 해석하면 '제어의 역전'이라는 뜻이다. 이전에는 프로그램의 흐름을 개발자가 주도했지만 스프링에서는 이 흐름이 달라진다. 메소드나 객체의 호출을 개발자가 아닌 스프링 컨테이너에서 담당한다. 스프링 컨테이너는 IoC 컨테이너라고도 불린다. ✔️ IoC 컨테이너 IoC 컨테이너란? 객체를 생성, 관리 그리고 의존성을 관리해주는 컨테이너이다. IoC 컨테이너가 관리하는 객체를 Bean이라고 하는데, Bean을 저장해서 BeanFactory라고도 불린다. BeanFactory는 하나의 인터페이스이다. 의존 관계 외에 다양한 기능을 제공하는데 이 BeanFactory.. 2022. 8. 23.