목록Spring (27)
yeon's blog

본 내용은 인프런 사이트에서 김영한 선생님의 "스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술" 강의 내용을 정리한 것입니다. 🌱 웹 서버, 웹 애플리케이션 서버 💡 웹 - HTTP 기반 웹 브라우저(클라이언트)에서 URL을 입력하면 인터넷을 통해 서버에 접근하고, 서버에서는 HTML을 만들어 클라이언트에게 전달해 우리에게 화면을 띄워준다. 이러한 과정은 전부 HTTP 프로토콜을 기반으로 동작하게 된다. 💡 모든 것이 HTTP HTTP 메세지에 모든 것(거의 모든 형태)을 전송할 수 있다. HTML, TEXT IMAGE, 음성, 영상, 파일 JSON, XML (API) 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용 💡 웹 서버 (Web Server) HTTP 기반으로 동작하는 서버이고, 정적 ..

지난 포스트에 이어 Spring Security의 인증 처리 과정에 대해 알아보려 한다. 4. Spring Security 인증 처리 과정 1) 클라이언트(유저)가 로그인을 요청한다. → Http Request 수신 2-1) AuthenticationFilter에서 인증을 처리한다. Servlet Filter에 의해서 Security Filter로 Security 작업이 위임되고 (AuthenticationFilter가 요청을 가로챔), 여러 Security Filter 중에서 UsernamePasswordAuthenticationFilter에서 인증을 처리한다. 2-2) UsernameAuthenticationToken 발급 AuthenticationFilter는 HttpServletRequest에서 ..

1. Spring Security 개념 스프링 기반의 애플리케이션의 보안(인증과 권한)을 담당하는 프레임워크 스프링 시큐리티는 필터(Filter) 기반으로 동작하기 때문에 스프링 MVC와 분리되어 관리 및 동작한다. 필터(Filter)는 Dispatcher Servlet으로 가기 전에 적용되므로 가장 먼저 URL 요청을 받지만, Interceptor는 Dispatcher와 Controller 사이에 위치한다. 그래서 이 둘은 적용 시기에 차이점이 있다. Client (request) -> Filter -> DispatcherServlet -> Interceptor -> Controller Spring Security 3.2버전 부터는 자바 config 설정으로 간단하게 설정할 수 있다. (XML 설정 X..

패키지 구조에 정답이 있다고 생각하진 않지만, 기본적으로 사용하는 구조는 계층형과 도메인형이라고 생각한다. 계층형 구조 아래와 같이 계층별로 클래스를 모아두는 방법이다. (Controller는 Controller끼리, Service는 Service끼리) 계층형 구조는 프로젝트에 대한 이해가 낮아도 전체적인 구조를 빠르게 파악할 수 있는 장점이 있지만, 디렉터리에 클래스들이 너무 많이 모이게 되는 문제점이 있다. 도메인형 구조 아래와 같이 하나의 도메인 아래 관련 controller, service, repository 등 패키지를 각각 만들어 넣는 방법이다. 도메인형 구조의 경우 관련된 코드들이 응집해 있다는 장점이 있지만, 프로젝트에 대한 이해도가 낮을 경우 전체적인 구조를 파악하기 어렵다.

SRP: 단일 책임 원칙(single responsibility principle) 하나의 클래스는 하나의 책임만 가져야 한다는 원칙. 💡 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것! OCP: 개방-폐쇄 원칙 (Open/closed principle) 확장에는 열려있으나 변경에는 닫혀 있어야 한다는 원칙. 소스코드 변경은 없고 다형성을 이용하여 객체 생성 코드만 늘어나게 한다. 💡 객체를 생성하고, 연관관계를 맺어주는 별도의 조립, 설정자가 필요하다 → Config LSP: 리스코프 치환 원칙 (Liskov substitution principle) 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다는 원칙 💡 LSP를 이해하기 위해..

1. Annotation 사전적 의미로 주석이라는 뜻 자바에서는 특별한 의미, 기능을 수행하도록 하는 기술 클래스가 어떤 역할인지 정하기도 하고, Bean을 주입하기도 하며, 자동으로 getter, setter를 생성하기도 함 2. Annotation 종류 @Component 개발자가 생성한 class를 Spring의 Bean으로 등록할 때 사용하는 Annotation @ComponentScan @Component, @Service, @Repository, @Controller, @Configuration이 붙은 클래스 Bean들을 찾아 Context에 bean을 등록해주는 Annotation @Bean 개발자가 제어가 불가능한 외부 라이브러리와 같은 것들을 Bean으로 만들 때 사용하는 Annotati..

🌱 Spring 🌱 Java 기반의 프레임 워크 Java 언어의 큰 특징인 객체 지향 언어를 살림 즉, 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크 🌱 Spring Framework 특징 🌱 1. 제어의 역전(IoC, Invertion of Control) 제어의 역전: 객체의 제어권을 프레임워크의 컨테이너에게 넘기는 것 스프링 컨테이너에 Bean(객체) 등록시, 스프링 컨테이너에서 객체의 라이프 사이클(생성, 소멸)을 컨트롤 해준다. 즉, 객체에 대한 제어권이 스프링 컨테이너로 역전되는 것! 2. 의존성 주입(DI, Dependency Injection) 의존성 주입: 클래스간 의존성을 클래스 외부에서 주입하는 것 Spring에는 DI 컨테이너가 존재하여, 객체들 간의 의..