본문 바로가기

BackEnd/Spring

스프링의 주요 모듈 1. 스프링의 주요 모듈간의 의존 관계 다수의 모듈이 spring-context 모듈을 직/간접적으로 의존하고 있으므로, 스프링 프레 임워크를 이용해서 웹 어플리케이션을 개발하거나 DB를 연동할 때는 spring-context, spring-aop, spring-beans, spring-core 모듈은 항상 함께 사용된다. 실제로 spring-webmvc 모듈은 XML 처리를 위해 spring-oxm 모듈을 사용하고 있으며, spring- context 모듈의 기능도 사용하고 있다. 2. 스프링의 주요 모듈 목록 spring-beans : 스프링 컨테이너를 이용해서 객체를 생성하는 기본 기능을 제공한다. spring-context : 객체 생성, 라이프 사이클 처리, 스키마 확장등의 기능을 제공한다. s..
스프링의 의존성 주입 방식 스프링의 의존성 주입 방식 1. Setter 주입 setXXX()와 같은 메서드를 작성하고(혹은 Lombok으로 생성하 고) ®Autowired와 같은 어노테이션을 통해서 스프링으로부터 자신이 필요한 객체를 주 입해 주도록 한다. 2. Setter 주입 예시 https://github.com/ytw9699/SpringExamples/blob/master/mvnprj/ex00/src/main/java/org/zerock/sample/SampleHotel1.java 3. 생성자 주입 생성자 주입은 생성자를 통해서 처리한다. 생성자 주입의 경우 객체 생성시 의존성 주입이 필요하므로 좀 더 엄격하게 의존성 주입을 체크 하는 장점이 있다. 기존에 스프링에서는 생성자 주입을 하기 위해서 생성자를 정의하고, @Aut..
lombok에 대해 1. lombok이란? Lombok을 간단히 설명하면 컴파일 시 흔하게 코드를 작성하는 기능들을 완성해주는 라이브러리 getter, setter 등의 코드를 줄여서 취소한의 코드로 할수 있게함 2. lombok 관련 어노테이션 @Setter : setter 메서드를 만들어주는 역할을 @Data : @ToString, @EqualsAndHashCode, @Getter/©Setter, @RequiredArgsCtonstructor를 모두결합한 형태로 자주 사용되는 모든 메서드들을 한 번에 생성할 수 있다는 장점 @Log4j : 로그 객체를 생성
unit test에 대해 유닛테스트 사용법 : https://jkonury.tistory.com/196 1) 용어정리 - unit: 구성 단위 (여기서 말하는 구성단위는 프로그램의 기본 단위인 모듈) - JUnit: 자바용 단위 테스트 작성을 위한 산업 표준 프레임워크다, Java에서 독립된 단위 테스트를 도와주는 framework! - 모듈: 프로그램 내의 하나의 기능으로 생각하자(예: MS Word라는 프로그램이 있다는 가정하에 Word내에 있는 기능 중, 폰트 사이즈 선택 기능이 일종의 모듈이라 볼 수 있다) 2) unit test란? 유닛 테스트(unit test)는 컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차다. - 코드를 가능한 한 작은 단위로 실행해보는 테스트를 작성하는..
스프링 프레임워크에 대해 1. 스프링 프레임워크의 차별성 1-0) 스프링은 경량 프레임워크다. 스프링은 가장 성공적인 '경량(light-weight) 프레임워크' 이다. 스프링은 특정 기능을 위주로 간단한 jar 파일 등을 이용해서 모든 개발이 가능하도록 구성된 프레임워크이다. 1-1) 복잡함에 반기를 들어서 만들어진 프레임워크 엔터프라이즈급 프레임워크들의 가장 큰 문제점으로는 복잡성으로 보고 있다. 다양한 경우를 처리할 수 있는 다양한 기능을 가지도록 만들다 보니 하나의 기능을 위해서 너 무 많은 구조가 필요한상태가 되었다. 이러한복잡성을 해결하기 위해서 나온 경량화된 프레임 워크가 스프링이다. 일반적인 Java의 클래스와 인터페이스를 이용하는 구조이기 때문에 진입 장벽이 높지 않았고,EJB(Enterprise JavaBean..
maven이란? 1. maven이란? 빌드 도구인 maven의 주요 특징 중 하나는 의존 모듈(jar 파일) 관리에 있다. 메이븐의 경우 중앙 저장소(central repository)라고 불리는 서버로부터 필요한 jar 파일을 다운 로드 받아 의존 모듈을 관리한다. 라이브러리들을 편리하게 공유하고 다운받고자 나온 것이 메이븐이다. 즉, 필요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 네트워크를 통해서 라이브러리들 을 자동으로 다운 할 수 있다. jar파일을 직접적으로 다른이에게 보낼 필요 없이 pom.xml에 필요한 것을 명시해놓으면 네트워크 를 통해서 라이브러리를 매우 손쉽게 다운할 수 있다. Maven을 이용하게 된다면 코드 몇줄로 필요한 라이브러리를 작동시키고 그 라이브러리가 필요로 하는 다른 라이..
스프링 시큐리티의 내부구조 1. 스프링 시큐리티의 내부구조 스프링 시큐리티에서 가장 중요한 역할을 하는 존재가 인증을 담당하는 AuthenticationManager(인증 매니저)이다. AuthenticationManager는 다양한 방식의 인증을 처리할 수 있도록 위와같은 구조로 설계되어 있다. ProviderManager는 인증에 대한 처리를 AuthenticationProvider라는 타입의 객체를 이용해서 처리 를 위임한다. AuthenticationProvider(인증 제공자)는 실제 인증 작업을 진행한다. 이때 인증된 정보에는 권한에 대한 정보를 같이 전달하게 되는데 이 처리는 UserDetailsService라 는 존재와 관련 있다. UserDetailsService 인터페이스의 구현체는 실제로 사용자의 정보와 사용자..
스프링 시큐리티의 기본동작 방식 1. 스프링 시큐리티의 기본 동작 방식 스프링 시큐리티의 기본 동작 방식은 서블릿의 여러 종류의 필터와 인터셉터를 이용해서 처리된 다. 필터는 서블릿에서 말하는 단순한 필터를 의미하고 인터셉터는 스프링에서 필터와 유사한 역 할을 한다. 필터와 인터셉터는 특정한 서블릿이나 컨트롤러의 접근에 관여한다는 점에서는 유사하지만 결정 적인 차이를 구분하자면 필터는 스프링과 무관하게 서블릿 자원이고, 인터셉터는 스프링의 빈으로 관리되면서 스프링의 컨텍스트 내에 속한다는 차이이다. 왼쪽은 일반 필터로 현재 실행되는 서블릿 컨텍스트에 속하긴 하지만 스프링과 무관하다. 반면에 인터셉터의 경우는 스프링의 내부에서 컨트롤러를 호출할 때 관여하기 때문에 스프링의 컨 텍스트 내에 있는 모든 자원을 활용할 수 있다. 하나의 스프링..