Spring MVC Spring MVC: Spring에서 제공하는 웹 모듈. 웹 프레임워크의 한 종류로 MVC는 Model-View-Controller의 약자이다. Spring MVC는 클라이언트의 요청을 편리하게 처리해주는 프레임워크이며 서블릿 기반으로 동작한다. MVC 패턴을 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 실행되는 비즈니스 로직을 서로 영향 없이 유지보수할 수 있도록 개발할 수 있다. Model Spring MVC 기반의 웹 애플리케이션이 클라이언트의 요청을 전달받으면 요청 사항을 처리하기 위한 작업을 한다. 이렇게 처리한 작업의 결과 데이터를 클라이언트에게 응답으로 돌려줘야 하는데, 이때 클라이언트에게 응답을 돌려주는 작업의 처리 결과 데이터..
CGLIB CGLIB(Code Generator Library): 코드 생성 라이브러리로서 런타임에 동적으로 자바 클래스의 프록시를 생성해주는 기능을 제공한다. 인터페이스가 아닌 클래스에 대해서 동적 프록시를 생성할 수 있다. CGLIB는 Spring AOP를 공부하면서 들었던 개념이었다. Spirng에서 AOP를 적용할 때 런타임시 프록시를 생성한다. 이때 인터페이스 기반은 JDK Dynamic Proxy로 클래스 기반은 CGLIB를 사용한다. Spring Boot에서는 CGLIB를 사용하고 있다. CGLIB는 타겟에 대한 정보를 직접적으로 제공 받아 바이트 코드를 조작하여 프록시를 생성한다. 때문에 리플렉션을 사용하는 JDK Dynamic Proxy에 비해 성능이 좋다. 또한 CGLIB는 메소드가 처..
Annotation Annotations, a form of metadata, provide data about a program that is not part of the program itself. Annotations have no direct effect on the operation of the code they annotate. -https://docs.oracle.com/javase/tutorial/java/annotations/- Annotation: 사전적 의미로는 주석이라는 의미이다. 자바에서는 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술이다. 즉, 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종이다. 따라서 단순 주석 기능을 하는 것이 아닌 특별..
Spring Security의 구조 사용자가 로그인 정보와 함께 인증을 요청한다. AuthenticationFilter가 요청을 가로 챈 뒤, UsernamePasswordAuthenticationTocken의 인증용 객체를 생성한다. AuthenticationManger의 구현체인 ProviderManager에게 생성한 인증 토큰을 전달한다. AuthenticationManager는 등록된 AuthenticationProvider를 조회하여 인증을 시도한다. 실제 DB에서 사용자 인증정보를 가져오는 UserDeatailService에 사용자 정보를 전달한다. 넘겨받은 사용자 정보를 토대로 DB에서 찾은 사용자 정보인 UserDatails 객체를 만든다. AuthenticationProvider는 Use..
Spring Security란? Spring Security: Spring MVC 기반 애플리케이션의 인증(Authentication)과 인가(Authorization or 권한 부여) 기능을 지원하는 보안 프레임워크. Spring 기반 애플리케이션 보안을 위한 사실상의 표준이다. Authentication(인증): 해당 사용자가 본인이 맞는지 확인하는 절차 인증을 정상적으로 수행하기 위해 사용자를 식별하기 위한 정보가 필요하다. 이를 Credential이라 부른다. ex) 신분증 Authorization (인가, 권한 부여): 인증된 사용자가 요청된 자원에 접근가능한가를 결정하는 절차 반드시 인증 과정 이후에 수행되어야 한다. 권한은 일반적으로 역할(Role)형태로 부여된다. ex) 사원증, 사무실에 ..
OOP Study 에서 Spring Study로 방향성을 변경한 후, 처음으로 발표한 내용이다. Spring의 기초에는 스프링의 핵심기술인 IoC/DI, AOP, PSA 내용을 빼먹을 수 없겠지만, 다음 챕터에서 정리할 내용이기에 스프링 모듈쪽을 중심으로 정리했다. Spring의 기초 Spring의 모듈 구성 Spring Core Container 스프링 프레임워크 의존성 주입 IoC(Inversion of Control) 컨테이너 및 애플리케이션 컨텍스트 핵심 기능을 제공한다. 모듈 설명 spring-core - 스프링 모듈이 사용하는 핵심 유틸리티 - 프레임 워크의 기반을 제공 spring-beans - BeanFactory 인터페이스를 통한 구현을 포함 - 의존성 주입을 제공함 - Spring Be..
AOP를 공부하게 되면 뒤따로오는 개념인 필터와 인터셉터. 인터셉터를 오늘 처음으로 어떤 것인지에 대해 공부하게 됐는데, AOP와 비슷하다 생각했다. 그래서 AOP와 인터셉터의 차이점에 대해 블로깅하면서 필터도 함께 알아볼 생각이다. 공통 기능 구현의 분리 웹 개발을 하다 보면 로그인 관련(세션처리), 로깅, 트랜잭션, 권한체크 등 공통 로직으로 처리해야 되는 업무가 생긴다. 이러한 기능을 반복해서 작성해야 한다면, 중복된 코드가 많아지게 되고, 유지보수가 힘들어지며 소스관리가 되지 않는다. 때문에 공통 기능은 핵심 기능과 분리하여 관리해야 한다! 그럼 어떻게 공통 기능을 관리해야 할까? 메소드 호출 앞, 중간, 뒤에 추가하여 공통 로직을 처리할 수 있는 방법이 3가지가 있다. Filter(필터) - 핸..
@Autowired 💡 @Autowired: 자동 주입 기능, 스프링이 알아서 의존 객체를 찾아 주입한다. 의존을 주입할 대상에 애노테이션을 붙이기만 하면 된다. @Autowired 애노테이션을 붙이면 설정 클래스에서 의존을 주입하지 않아도 된다. 스프링이 해당 타입의 빈 객체를 찾아서 필드에 할당한다. 일치하는 빈이 없는 경우 빈이 없는 경우 Error creating bean with name '—-'(UnsatisfiedDependencyException) 같은 에러 메시지가 나온다. 주입 대상에 일치하는 빈이 2개 이상일 경우 @Bean public MemberPrinter memberPrinter1() { return new MemberPrinter() ; } @Bean public Member..
들어가며 스프링이란? 의존 주입(Dependency injection: DI) 지원 AOP(Aspect-Oriented Programming) 지원 MVC 웹 프레임워크 제공 JDBC, JPA 연동, 선언적 트랜잭션 처리 등 DB 연동 지원 이외에도 스케줄링, 메시지 연동(JMS), 이메일 발송, 테스트 지원 등 자바 기반의 앱을 개발하는데 다양한 기능을 제공해주는 프레임워크이다. 스프링에 관련된 프로젝트는 다양하다. 이중에 자주 사용되는 것은 다음과 같다. 스프링 데이터: 적은 양의 코드로 데이터 연동을 처리할 수 있도록 도와주는 프레임워크 스프링 시큐리티: 인증/인가와 관련된 프레임워크로서 웹 접근 제어, 객체 접근 제어, DB · 오픈ID · LDAP 등 다양한 인증 방식, 암호화 기능을 제공 스프..