Spring
DI 인젝션이 필요한 이유는?
DI란 Dependency Injection의 줄임말입니다. 이것은 의존관계 주입이라고 불립니다. 의존 관계의 정의란 무엇일까요? A가 B에 의존한다는 것은 B가 변하면 A가 영향을 받는다는 것을 의미합니다. 예를 들어 '컴퓨터' 라는 클래스가 있고 이 클래스는 'CPU001' 라는 클래스에 의존하고 있다고 가정해봅시다. 이떄 CPU001이 아닌 다른 종류의 CPU로 바꾸고 싶으면 컴퓨터 클래스 내부에 있는 코드를 수정해야합니다. 만약 컴퓨터 클래스가 CPU001 뿐만 아니라 다양한 다른 클래스에도 의존하고 있으면 의존관계에 있는 클래스를 바꿀 때 마다 컴퓨터 클래스를 수정해야 될 것입니다. public class Computer { private CPU001 cpu001; public Computer(..
스프링 시큐리티를 쓰는 이유는?
개인 프로젝트를 스프링 시큐리티를 쓰지 않고, 세션과 쿠키 그리고 스프링 인터셉터를 활용하여 인증과 인가 및 로그인 처리까지 성공적으로 수행할 수 있었습니다. 그런데 다른 사람들의 프로젝트는 대부분 기본적인 세션을 쓰는 대신에 스프링 시큐리티를 사용하여 인증과 인가 작업을 수행하는 것을 알 수 있었습니다. 어떤 좋은 기술이든 좋다고 무분별하게 쓰는 것이 아니라, 써야 되는 이유를 분명히 알아야 한다고 생각하기 때문에 이와 관련된 글을 작성해봤습니다. 스프링 시큐리티란 ? 스프링 기반의 어플리케이션 보안을 위해 인증과 권한 부여를 사용하여 접근을 제어하는 프레임워크 1. 모든 URL을 가로채 인증을 요구 2. 로그인 폼을 생성 3. CSRF 공격을 막는다. 4. 인터셉터가 아닌 필터 기반으로 ..
스프링 컨테이너와 스프링 빈
스프링 컨테이너란? 스프링에서 자바 객체들을 관리하는 공간 스프링 빈의 생성부터 소멸까지 관리해주는 곳 스프링 컨테이너의 생성 과정 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); - ApplicationContext를 스프링 컨테이너라고 지칭 - ApplicationContext는 인터페이스이다. 스프링 컨테이너는 XML기반과 어노테이션 기반으로 생성할 수 있다. 어노테이션 기반의 스프링 컨테이너를 사용하려면 ApplicationContext를 구현한 AnnotationConfigApplicationContext를 구현체로 사용한다. 그렇다면 생성자 파라미터로 들어간 Appcon..
스프링 mvc 동작 원리에 대하여
개인 프로젝트를 진행하면서 에러가 터질 때 어떤 부분에서 발생하는지 항상 궁금했다. mvc구조가 어떤 원리로 작동되는지 대략적으로는 알고 있는데(Dispatcher Servlet이 request를 받아서 ~~ ) 깊은 부분까지는 부족한 것 같아 포스팅 하는 겸 정리하고자 한다. 1. Dispatcher Servlet이 url 요청을 받는다. 2. 요청을 받은 Dispatcher Servlet이 핸들러 url 정보를 Handler Mapping에 넘긴다. 3. HandlerMapping은 HandelrAdapter목록에서 Handler(Controller)을 처리할 수 있는 Adapter을 찾는다. 4. 찾은 HandlerAdapter을 실행하고 그에 맞는 Contoller가 실행된다. ..