Spring 6

스프링 의존성 주입(DI) - 생성자 주입/수정자 주입/필드 주입

프로젝트 개발 중에 스프링을 사용할 때 생성자 주입방식을 적극 지향하고 있는데 그 이유를 명확히 설명하기 어려웠다. 뿐더러 장점을 정확히 알고 사용했다기보다는 스프링이 권장하는 방식? 이라는 이유때문에 사용했는데 특징은 무엇인지 장점과 단점에 대해 명확히 구분하여 사용해야하는데 라는 당연한 생각이 들어 알아보았다. 생성자 주입 방식 외에도 2가지가 더 있기때문에 주입 방식들에 대해 비교하여 공부하고 잊지 않기 위해 포스팅해보려고 한다. 위의 그림은 Spring의 삼각형이라 불리며, Spring의 핵심 구조를 나타낸다. 이 중 의존성 주입을 알아 볼 것이다. 의존성 주입 (Dependency Injection) 의존성 주입은 스프링 프레임워크의 3가지 핵심 프로그래밍 중에 하나이며, 외부에서 두 객체 간의..

Spring 2023.09.22

Log4j & Logback & Log4j2의 차이

프로그램 개발 시에 콘솔을 출력하다 문득 성능이 느려지는 경험을 하였다. 관련해서 콘솔에 출력할 때에 성능적으로 개선할 수 있는지 찾아보았다. log 라이브러리인 log4j부터해서 logback, log4j2에 대한 많은 정보가 있었다. 이에 대해 각각 알아보고 올바르게 로그를 사용하여 출력하고 관리하고자 공부하여 포스팅해보았다. 먼저 log 라이브러리가 아닌 System.out.println()을 지양하는 이유는 이러하였다. 디버깅 목적으로 사용하지만 출력을 버퍼에 쌓은 다음에 화면으로 내보내는 방식으로 동작한다. 작은 양의 출력을 자주 호출하는 경우에는 버퍼링 작업이 불필요하게 쌓여 오버헤드를 발생 시킬 수 있다. 그 밖의 여러 스레드에서 동시에 호출 될 수 있어 출력이 혼란스러워지고, 동기 방식(동..

Spring 2023.08.25

Filter vs Interceptor vs AOP

토비 스프링 책을 탐구하며 스프링의 3요소 중 하나인 AOP에 대해 공부하는데 문뜩 Spring에서는 AOP말고 어떠한 로직을 실행되기 전 전처리 작업으로 지정할 수 있는 기능으로 Filter, 인터셉터도 있는데 AOP와의 역할의 차이에 대해 궁금하였다. 그래서 Spring MVC 생명주기 구조를 보며 흐름과 필터, 인터셉터, AOP의 대해 알아보고 그 내용에 대해 포스팅해보았다. 간단히 실행순서는 이렇게 진행된다. Filter → InterCeptor → AOP → Interceptor → Filter Filter (필터) Filter는 '거르다' 라는 뜻을 가지고 있는데 무엇을 걸러내는 것일까? 위의 그림에서와 같이 Filter는 DispatcherServlet 앞에 존재한다. Spring conte..

Spring 2023.07.16

Mapper(Mybatis 라이브러리)를 활용한 DB와의 통신

이전 교육센터에서 교육받으면서 만들어 보았던 프로젝트를 복습겸 다시 보았다. Spring 프로젝트 구조가 Controller - Service - DAO - Mapper.xml 형식으로 개발 했었다. 또 다른 스프링 프로젝트 구조를 보면 Controller - Service - MapperClass - Mapper.xml 형식으로 잡고 개발한 프로젝트가 있었다. 그 당시엔 이유가 있어 나눠 개발했었는데 한참 지난 후에 다시 보니 왜 그랬지? 라는 생각이 문뜩 들었다. 기억이 안났다......ㅎr.. 역시.. 사람의 기억력은 한계가 있음을 다시한번 깨달았다. 이참에 다시 알아보고 기록해야겠다라는 생각으로 글을 쓰려한다. DAO와 Mapper가 단순히 이름만 다르고 기능은 같은 것인가 하는 생각에 어떤 차이..

Spring 2023.06.26

Spring Bean Scope란?

토비 스프링을 공부하다보면 Bean은 매우 중요한 개념인 걸 알 수 있다. 중요한 개념인 빈이 싱글톤으로 만들어지는 줄로 알고있었는데 빈을 싱글톤이 아닌 다른 방법으로 만들어 사용해야 할 때가 있다고 한다. 그렇게 크게 두 가지로 나눌 수 있는데 그 두 가지가 프로토타입 빈과 스코프 빈이였다. Bean이 무엇이고 빈 스코프가 무엇인지, 어떤 방법으로 만들어지는지 종류에 대해 알아보며 포스팅 해보고자 한다. Bean Scope 우선 Bean 이 뭔지 알아보자. Bean은 IoC 컨테이너가 관리하는 자바 객체이다. Spring은 자바 객체를 쉽게 관리할 수 있도록 IoC 컨테이너에 등록하여 사용한다. 그렇다면 IoC 컨테이너는 뭐하는 애야? 이것도 뭔지 알아보자! IoC 컨테이너란? IoC는 Inversio..

Spring 2023.06.18

Spring AOP vs AspectJ

토비 스프링 책을 공부하다가 Spring의 두번째 핵심인 AOP에 대해 공부 한 것을 다시 이해하고 정리하기 위해 포스팅 해 보았다. 저와 같이 AOP에 대해 공부하고자 하는 분들에게 조금이나마 도움이 됐으면 좋겠다. Spring AOP란? Aspect Oriented Programmin 의 약자로, 관점 지향 프로그래밍 이라고 부른다. 관점 지향은 애플리케이션 전체 로직을 핵심적인 관점, 부가적인 관점으로 나누어 관점 기준으로 모듈화 하는 것이다. 핵심적인 관점은 업무 로직을 포함하는 기능으로 핵심 기능(Core Concerns)이라 한다. 부가적인 관점은 핵심 기능을 도와주는 기능(데이터베이스 연결, 로깅, 보안 등)을 부가 기능(Cross-cutting Concerns)라 한다. 즉, 관심사의 분리..

Spring 2023.05.23