Spring
-
[Spring] AOP란 무엇인가? (관점지향 프로그래밍)Spring 2024. 7. 21. 16:23
AOP(Aspect Oriented Programming)란?AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 모듈화 하겠다는 것이다. 그렇다면 이 관점(Aspect)을 지향하는 프로그래밍은 무엇일까? 아이를 키우는 육아 방식이나 교육 방식 등은 부모에 따라 제각각이다.어떤 부모는 아이의 언어 발달을 위해 책을 읽어줄 것이고, 어떤 부모는 동요나 만화를 들려줄 것이다. 이처럼 아이를 키우는 방식은 다를 수 있지만, 공통되는 부분이 존재한다.부모의 공통된 관심사는 어떤 방식으로 아이를 키우는 것과는 별개로 아프지 않고 잘 자라는 것이다. AOP는 부모들..
-
[Spring] 필터(Filter)와 인터셉터(Interceptor)Spring 2024. 7. 21. 02:46
Spring에서 공통적으로 여러 작업을 처리하고 중복된 코드를 제거 및 재가공하는 많은 기능을 가지고 있다.그 중 필터와 인터셉터라는 기능이 있고 이 둘의 공통점으로 Controller에 도달하기 전 처리되는 기능이지만, 역할이 다르므로 이 둘의 정의와 차리를 알아보자.1. 필터필터는 말 그대로 요청과 응답을 거른 뒤에 정제하는 역할을 한다. 디스패처 서블릿(Dispatcher Servlet)에 요청이 전달되기 전, 후에 url 패턴에 맞는 모든 요청에 대해 부가 작업을 처리할 수 있는 기능을 제공한다. 디스패처 서블릿이란? 디스패처 서블릿은 스프링의 가장 앞단에 존재하는 웹에서 이뤄지는 컨트롤러이므로, 필터는 스프링 범위 밖에서 처리가 되는 것 즉, 스프링 컨테이너가 아닌 톰캣과 같은 웹 컨테이너에 의..
-
private 메서드에 @Transactional이 적용될까?Spring 2024. 4. 2. 15:08
Spring은 AOP를 사용해서 @Transactional 애너테이션을 처리하고, 이 과정에서 동적으로 프록시 객체를 생성한다. 생성된 프록시 객체는 원래의 Bean 객체를 대신해서 호출된다. private 메서드나 private 필드는 해당 클래스에서만 접근 가능하기 때문에 외부에서 접근해서 프록시 객체를 생성할 수 없게 되는 것이다. 그래서 @Transactional 애너테이션을 가지고 있는 private 메서드에 접근하려고 해도 프록시 객체를 생성할 수 없기 때문에 해당 애너테이션을 무시하게 된다. 하지만 @Transactional 애너테이션이 적용된 public 메서드에서 private 메서드를 호출하면 해당 private 메서드에도 Transaction이 적용된다. @Transactional S..
-
Spring Boot와 AWS로 혼자 구현하는 웹 서비스 - 3장 Spring Boot에서 데이터베이스 다뤄보자Spring 2022. 2. 26. 14:59
웹 서비스를 개발하고 운영하다 보면 피할 수 없는 문제가 데이터베이스를 다루는 일 필자가 스프링을 배울 때는 iBatis와 같은 SQL 매퍼를 이용해서 데이터베이스의 쿼리를 작성했습니다. 그러다 보니 실제로 개발하는 시간보다 SQL을 다루는 시간이 더 많았습니다. 이것이 이상하게 느껴졌습니다. 분명 "객체지향 프로그래밍"을 배웠는데 왜 객체지향 프로그래밍을 못 하지? 객체 모델링보다는 테이블 모델링에만 집중하고, 객체를 단순히 테이블에 맞추어 데이터 전달 역할만 하는 개발은 분명 기형적인 형태였습니다. 문제의 해결책으로 JPA라는 자바 표준 ORM 기술을 만나게 됩니다. 이번 시간에는 JPA를 프로젝트에 적용해 보겠습니다. JPA 소개 Oracle, MySQL 등을 쓰지 않는 웹 애플리케이션은 거의 없습..
-
Spring Boot와 AWS로 혼자 구현하는 웹 서비스 - 2장 Spring Boot에서 테스트 코드를 작성하자Spring 2022. 2. 20. 10:26
2장의 목표 : 테스트 코드 작성의 기본을 배운다. TDD와 단위 테스트 TDD와 단위 테스트는 서로 다른 이야기 TDD : 테스트가 주도하는 개발하는 것으로 테스트 코드를 먼저 작성하는 것부터 시작 레드 그린 사이클 - 항상 실패하는 테스트를 먼저 작성(Red) - 테스트가 통과하는 프로덕션 코드를 작성(Green) - 테스트가 통과하면 프로덕션 코드를 리팩토링(Refactor) 반면 단위 테스트는 TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것을 말한다. 테스트 코드를 꼭 먼저 작성하는 것도 아니고, 리팩토링도 포함되지 않고 순수하게 테스트 코드만 작성하는 것을 말한다. 단위 테스트 장점 - 개발단계 초기에 문제를 발견하게 도와준다. - 개발자가 나중에 코드를 리팩토링하거나 라이브러리..
-
[Spring] Maven, pom.xmlSpring 2021. 4. 13. 22:27
1. Maven은 무엇인가? 자바 프로젝트를 관리하는 툴로, 미리 작성된 xml 파일을 이용하여 라이브러리를 자동으로 다운로드하거나 프로젝트를 빌드해준다. 즉, 자바 소스를 컴파일하고 패키지해서 deploy까지 자동화 해준다는 것이다. Maven은 필요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데에 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해서 자동으로 다운받아 준다. 1-1. 라이브러리란? 활용 가능한 도구들의 집합, 즉 재사용이 필요한 기능으로 반복적인 코드 작성을 없애기 위해 언제든지 필요한 곳에서 호출하여 사용할 수 있도록 Class나 Function으로 만들어진 것입니다. 1-2. 빌드란? 소스코드 파일을 컴퓨..
-