일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Django
- 직무면접
- Controller
- 유니온 파인드
- 최단경로
- compiler
- clean code
- 음수가 포함된 최단경로
- top-down
- bottom-up
- 동적계획법
- scikit-learn
- disjoint set
- union-find
- 엔테크서비스
- onclick
- dto
- Python
- 다익스트라
- spring boot
- 우선순위큐
- 벨만 포드 알고리즘
- 코딩테스트
- Android Studio
- 기술면접
- 거쳐가는 정점
- 플로이드 와샬
- kmeans
- Java
- BufferedReader
- Today
- Total
목록Developer's_til/스프링 프레임워크 (25)
춤추는 개발자
✅ 강의 소개 초급자를 위해 준비한 [웹 개발, 백엔드] 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. ✅ 강의별 후기 [ 객체 지향 설계와 스프링 ] 스프링이 만들어진 역사와 스프링의 생태계, 프레임워크에 대해 학습. 좋은 객체 지향 어플리케이션을 개발하기 위한 개념들을 이해 및 복습 - 추상화, 캡슐화, 상속, 다형성 - 다형성의 본질 (유연한 변경) - 객체를 설계할 때, 역할과 구현을 명확히 분리. - SOLID 원칙 SRP(변경에 따른 파급효과 최소화) OCP(확장에는 열려있고 변경에는 닫혀있음) LSP(프로그램의 정확성, 다형성의 인터페이스 규약) ISP(여러개의 인터페이스) DIP(추상화에 의존) [ 스프링 핵심 원리 이해..
✅ 트랜잭션 정의 트랜잭션의 기본 개념은 더 이상 쪼갤 수 없는 최소 단위의 작업이다. 앞서 작성했던 TransactionAdvice의 코드를 살펴보면 트랜잭션을 가져올 때 파라미터로 DefaultTransactionDefinition이 있다. DefaultTransactionDefinition이 구현하고 있는 TransactionDefinition 인터페이스는 트랜잭션의 동작방식에 영향을 줄 수 있는 네 가지 속성을 정의하고 있다. [ 트랜잭션 전파 ] 트랜잭션 전파란 트랜잭션의 경계에서 이미 진행 중인 트랜잭션이 있을 때, 또는 없을 때 어떻게 동작할 것인가를 결정하는 방식을 말한다. 만약, A 트랜잭션이 진행 중인 상태에서 B 트랜잭션이 호출된다면 어떻게 동작할까? B의 코드가 새로운 트랜잭션을 만..
✅ AOP란 무엇인가? 지금까지 비즈니스 로직을 담은 UserService에 트랜잭션을 적용해온 과정을 정리해보겠습니다. 1. 트랜잭션 서비스 추상화 문제: UserService가 특정 트랜잭션 기술에 종속된 코드가 돼버림 트랜잭션 적용이라는 추상적인 작업 내용은 유지하고, 구체적인 구현 방법을 자유롭게 바꿀 수 있도록 서비스 추상화 기법을 적용 인터페이스와 DI를 통해 무엇을 하는지는 남기고, 그것을 어떻게 하는지 분리한 것 PlatformTransactionManager 2. 프록시와 데코레이터 패턴 문제: 여전히 트랜잭션을 적용하는 코드가 비즈니스 로직에 남아있어서 관심사의 분리가 철저하게 이루어지지 않음, 코드 특성상 단순한 추상화와 메서드 추출 방법으로는 분리할 수 없음. 투명한 부가기능 부여를..
✅ 스프링의 프록시 팩토리 빈 자바에는 JDK에서 제공하는 다이내믹 프록시 외에도 편리하게 프록시를 만들 수 있도록 지원해주는 다양한 기술이 존재한다. 그 중 스프링의 ProxyFactoryBean은 프록시를 생성해서 빈 오브젝트로 등록하게 해주는 팩토리 빈이다. 기존에 만들었던 TxProxyFactoryBean과 달리, ProxyFactoryBean은 순수하게 프록시를 생성하는 작업만을 담당하고 프록시를 통해 제공해줄 부가기능은 별도의 빈에 둘 수 있다. 또한, ProxyFactoryBean이 생성하는 프록시에서 사용할 부가기능은 MethodInterceptor 인터페이스를 구현해서 만든다. MethodInterceptor의 invoke() 메서드는 ProxyFactoryBean으로부터 타깃 오브젝트에..
✅ AOP란? AOP는 스프링의 IoC/DI, PSA와 더불어 3대 요소 중 하나입니다. Aspected Oriented Programming의 약자로 여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용성을 높여주는 기법입니다. AOP를 공부하면서 이론 설명도 많았고, 처음 보는 용어가 많다보니 이해하기 어려웠습니다. 먼저, AOP를 적용함으로써 어떤 효과를 볼 수 있을지, 코드를 얼마나 개선할 수 있을지 확인하며 장점에 대해 알아보겠습니다. 스프링에 적용된 가장 인기있는 AOP의 적용 대상은 선언적 트랜잭션 기능입니다. 앞에서 PSA를 통해 UserService의 트랜잭션 경계설정 기능을 개선했지만, AOP를 이용하여 더욱 깔끔하게 바꿔보겠습니다. 또한, 트랜잭션의 단위테스트, 통합테스트와..
✅ PSA (Portable Service Abstraction) 이전 포스팅에서 UserDao와 인터페이스인 ConnectionMaker를 통해 IoC/DI를 구현하였습니다. 여기서 인터페이스란, 추상화 기술을 활용한 것으로 각 기술의 공통점을 담아 확장성을 용이하게 해준다는 특징이 있습니다. 이번에 학습할 PSA란, 직역하자면 '일관성있는 서비스 추상화' 입니다. 환경과 세부 기술의 변화에 관계없이 일관된 방식으로 기술에 접근할 수 있게 해주는 것을 의미합니다. PSA를 설명하기 좋은 예시 중 하나인 트랜잭션을 기반으로 상황 설정과 코드를 통해 알아보겠습니다. [ 트랜잭션이란? ] PSA에 대해 학습하기 전, 트랜잭션이란 간단하게 알고 넘어가겠습니다. 트랜잭션이란 더 이상 나눌 수 없는 단위 작업을 ..
이전 포스팅에서는 어플리케이션 컨텍스트를 적용한 UserDao와 DaoFactory를 작성하며 스프링 IoC에 대해 알아보았습니다. 특히, 코드를 분리하고 확장하는 과정(객체지향적인 설계, 디자인 패턴 등)에서 자연스럽게 IoC를 적용하거나 그 원리로 동작하는 기술을 사용해보았습니다. 이번에는 스프링의 IoC에 대해 좀 더 깊게 들어가서 대표적인 동작원리인 의존성 주입(DI)에 대해 알아보는 시간을 갖겠습니다. 의존성 주입(DI)이란 오브젝트 레퍼런스를 외부로부터 제공(주입)받고, 이를 통해 다른 오브젝트와 동적인 의존 관계가 만들어지는 것이 핵심입니다. ✅ 런타임 의존관계 설정 1. 의존관계 먼저 2개의 클래스가 의존관계에 있다고 가정할 때, 항상 방향성을 부여해줘야 합니다. 아래 그림은 두 클래스의 ..