본문 바로가기

Spring4

[Spring] DI(Dependency Injection) 개념 DI는 Dependency Injection 의존관계 주입이라는 뜻으로 객체지향 프로그래밍에서 통용되는 개념이다. '객체를 주입받는다'는 것은 외부에서 생성된 객체를 인터페이스를 통해 넘겨받는 것이다. 객체를 스스로 만드는 것이 아니라 제어권을 (스프링에) 위임하여 (스프링이) 만들어 놓은 객체를 넘겨 받는 것이다. 이렇게 하면 결합도를 낮출 수 있고, 런타임시에 의존관계가 결정되기 때문에 유연한 구조를 가진다. SOLID 원칙에서 O 에 해당하는 Open Closed Principle 을 지키기 위해서 디자인 패턴 중 전략패턴을 사용하게 되는데, 생성자 주입을 사용하게 되면 전략패턴을 사용하게 된다. OCP : 개방 폐쇄 원칙 확장에는 열려있고, 수정에는 닫혀있어야 한다. 의존관계 주입에는 크게 .. 2021. 5. 2.
[Spring] PSA (Portable Service Abstraction) 스프링 3대 특징(IoC/DI, AOP, PSA) 중 PSA에 알아본다. 개념 PSA는 Portable Service Abstraction으로 일관성 있는 서비스 추상화이다. 어댑터 패턴을 적용해 같은 일을 하는 다수의 기술을 공통의 인터페이스로 제어할 수 있게 한 것을 서비스 추상화라고 한다. 추상화 계층을 사용해서 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공해주는 것을 서비스 추상화(Service Abstraction)이라 한다. 서비스 추상화(Service Abstraction)로 제공되는 기술을 다른 기술 스택으로 간편하게 바꿀 수 있는 확장성을 갖고 있는 것이 Portable Service Abstraction이다. Spring은 Spring Web MVC, Spring Transacti.. 2021. 5. 2.
[Spring] AOP 개념 AOP(Aspect Oriented Programming) 의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 모듈화를 통해 핵심적인 기능에서 부가적인 기능을 분리한다. 분리한 부가기능을 애스펙트(Aspect)라는 독특한 모듈 형태로 만들어서 설계하고 개발하는 방법 핵심기능에서 부가기능을 분리해서 Aspect형태로 모듈화하는 것 핵심기능 : 업무 로직을 포함하는 기능을 핵심기능(Core Concerns) 부가기능 : 핵심기능을 도와주는 부가적인 기능(로깅, 보안 등)을 부가기능(Cross-c.. 2021. 4. 18.
[Spring] Pageable 다중 Sorting | PageableDefault | Pagination SQL을 Pageable을 이용하여 나타내기 select * from luvket.luvkets order by status desc, created_at desc limit 0, 25; 위와 같은 SQL문을 Spring 에서 Pageable을 이용하여 표현한다면 이렇게 나타낼 수 있습니다. 1 2 3 4 5 6 7 8 9 @GetMapping("") public LuvketResponse search(@PageableDefault(size = 25) @SortDefault.SortDefaults({ @SortDefault(sort = "status", direction = Sort.Direction.DESC), @SortDefault(sort = "createdAt", direction = Sort.D.. 2020. 1. 9.