본문 바로가기

프로그래밍/Spring23

[Spring] Spring의 핵심기술 PSA - 개념과 원리 안녕하세요. 오늘은 오랜만에 Spring에 대해서 이야기 해보고자합니다. [Spring] Spring의 정의와 기본 개념 포스팅에서 Spring의 대표적인 핵심가치 3가지로 IoC, AOP, PSA가 있다고 말씀드렸었습니다. 그리고 [Spring] Spring의 핵심 기술 IoC / DI에서 그 중 하나인 IoC/DI에 대해서 알아보는 시간을 가졌습니다. 그리고 이후 AOP에 대해서 3개의 포스팅 ([Spring] Spring AOP - 기본 이론편, [Spring] Spring AOP - 실전편, [Spring] Spring AOP - 원리편)에 걸쳐서 함께 알아보는 시간을 가졌습니다. 오늘은 마지막 남은 핵심가치인 PSA(Portable Service Abstraction)에 대해서 알아보는 시간을 .. 2020. 11. 25.
[Spring] Scheduler 어떤걸 사용해야 할까 ? - Spring Scheduler와 Spring Quartz 일정한 시간간격 또는 일정한 시각에 특정 로직을 돌리기 위해서 사용하는 것을 Scheduler라고 합니다. 이런 Scheduler는 Spring에서 Spring Scheduler와 Spring Quartz라는 2가지 방식으로 제공됩니다. 1가지 일에 2가지 방식을 Spring에서 제공하다니... 어떤걸 쓰면 좋을까요? 오늘은 2가지의 공통점과 차이점 그리고 내 프로젝트에서는 어떤 Library를 사용하면 좋을지 알아보는 시간을 가져보도록 하겠습니다. 사용법 먼저 각 라이브러리를 어떻게 사용할 수 있는지 확인해보겠습니다. 먼저 말씀 드리자면 Spring Scheduler를 사용하는 것보도 Spring Quartz를 사용하는 것이 좀 더 복잡하며 어렵습니다. Spring Scheduler Spring Sch.. 2020. 9. 15.
[Spring] Spring AOP - 원리편 안녕하세요. 오늘은 Spring AOP의 3번째 시간으로 마지막 시간입니다. 오늘은 AOP가 Spring 내부에서 구현되는 원리에 대해서 한번 알아보는 시간을 가져보도록 하겠습니다. AOP를 사용하는 방법 및 기본적인 이론은 아래 링크를 통해 이전 포스팅을 확인해주시기 바랍니다. [Spring] Spring AOP - 기본 이론편 [Spring] Spring AOP - 실전편 정적 프록시와 동적 프록시 Spring의 AOP는 프록시 패턴을 사용합니다. proxy pattern에 대해서는 예전에 [Spring & Design Pattern] Spring에서 발견한 디자인패턴_Proxy Pattern 으로 포스팅 한적이 있으니 참고하시면 자세히 알 수 있습니다. 만약 Class에 .. 2020. 7. 1.
[Spring] Spring AOP - 실전편 안녕하세요. 오늘은 저번 포스팅, 기본 이론편에 이어서 Spring AOP에 대해서 실제 적용을 해보며 알아보는 시간을 가지도록 하겠습니다. 저번 포스팅에서 배운 이론이 어떻게 적용되는지 눈으로 확인하시며 쉽게 이해가 되셨으면 좋겠습니다. AOP 적용 타입 Spring AOP는 아래와 같은 type의 Advice를 제공합니다. @Before Before는 target 메서드가 실행되기 전에 Advice가 실행됩니다. target이 실행되지 못하도록 막는 방법은 가지고 있지 않습니다. (exception을 발생시키면 되기는 합니다.) @After After는 target 메서드가 실행된 후에 Advice가 실행됩니다. 정상적으로 메서드가 마무리되든 비정상적으로 exception이 발생하든 무조건 실행되는 .. 2020. 6. 23.
[Spring] Spring AOP - 기본 이론편 안녕하세요. 오늘은 Spring AOP에 대해서 알아보고 실제로 적용하는 방법에 대해서 이야기해보고자합니다. AOP는 [Spring] Spring의 정의와 기본 개념에서 Spring을 비침투적인 기술로 만들기위한 3가지 기술중 하나라고 언급한 적이있습니다. 오늘부터는 Spring AOP에 대해서 알아보는 시간을 가져보도록 하겠습니다. AOP 먼저 아래 코드의 상황을 보면서 문제를 이해해보도록 하겠습니다. doSomething이라는 메서드가 있습니다. 이 메서드는 어떤 바쁜 일을 합니다. 이렇게 운영하던 중 새로운 요구사항이 들어왔습니다. 바로 doSomething 메서드가 실행되는 시간을 찍어달라고 합니다. 그렇다면 우리는 아래와 같이 timeCheck 메서드를 만들어 코드를 작성할 수 있습니다. pub.. 2020. 6. 20.
[Spring] Spring의 IoC/DI Container 안녕하세요. 저번 포스팅에서 IoC와 DI의 개념에 대해서 알아보았습니다. IoC 개념을 설명하며 Spring의 IoC는 일반적인 IoC 개념에 DI를 의 개념을 추가한 IoC/DI Container라고 설명을 드렸습니다. 오늘은 구체적으로 일반적인 IoC에 어떤 개념이 추가 된것인지 한번 보도록 하겠습니다. 본편에 들어가기 전에 먼저 Spring에 대한 용어를 정리한 후 Spring Container의 구조에 대해서 알아보도록 하겠습니다. 용어 정리 Spring IoC를 공부하다보면 생소하지만 한번쯤은 흘려 들어본 용어들이 많이 나옵니다. 이러한 용어를 정리하는 시간을 가지도록 하겠습니다. 빈(Bean) 빈 또는 빈 오브젝트는 Spring이 IoC 방식으로 관리하는 오브젝트라는 뜻. 즉, 우리가 일반적.. 2020. 3. 21.
[Spring] Spring의 핵심 기술 IoC / DI 안녕하세요. 요즘 코로나로 이슈가 많습니다. 다들 몸관리 잘 하시기 바랍니다. 오늘은 이전 포스팅에 이어서 Spring의 핵심 기술중 DI와 IoC에 데해서 알아보도록 하겠습니다. IoC (Inversion of Control) IoC는 영어 그대로 해석하면 제어의 역전이라고 말합니다. A라는 class가 B라는 클래스의 메서드를 사용하기로 했습니다. 그러면 아래와 같은 코드를 작성해야 합니다. 이런 관계를 A가 B를 의존하고 있다고 합니다. 왜냐하면 B의 로직에 따라 A가 영향을 받기 때문입니다. public class A { private B b; public A() { b = new B_1(); } public void useB() { b.method_1(); b.method_2(); } } int.. 2020. 3. 2.
[Spring] Spring의 정의와 기본 개념 안녕하세요. 대다수의 Java를 주 언어로 사용하는 분들이 사용하는 Web Framework가 바로 Spring FrameWork입니다. 오늘은 Spring정의와 기본 개념, 그리고 Spring의 목표에 대해서 알아보도록 하겠습니다. 정의 토비의 스프링을 보면 Spring은 아래와 같이 정의되어 있습니다. 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크 엔터프라이즈 서비스이라는 것은 실제 기업에서 사용할 수 있을 정도의 시스템으로 UI, 서비스 로직을 포함하여 있는 것이 아니라 보안, 트랜잭션과 같은 엔터프라이즈 시스템에서 요구되는 기술을 포함하는 서비스입니다. 목적 어떤 기술이든 그 자체로는 도구에 불과하며 용도에 맞게 잘 활용해서 궁극적으로 이루고자 하는 목표를 이루는 것이 중요.. 2020. 2. 21.
[Spring Boot] Spring Boot Actuator, Application을 모니터링 하자 안녕하세요! 연휴 잘보내고 계신가요? 저도 오랜만에 고향에 내려와서 연휴를 즐기고 있습니다. 시스템을 운영하다보면 시스템이 사용하고 있는 Thread, memory, Session 등의 요소에 대해서 모니터링은 필수적인 요소 입니다. 운영되는 시스템은 아무리 잘 만들어 졌다고 할지라도 버그가 있을 수 있습니다. 우리는 이런 상황을 대비하기 위해서 모니터링은 필요한 요소입니다. Spring Boot에서는 Spring Boot Actuator라는 자체모니터링 툴을 제공합니다. 오늘은 해당 모듈에 대해서 알아보도록 하겠습니다. Spring Actuator Spring Boot 공식 Reference에 나와있는 Actuator에대한 간략한 설명입니다. Spring Boot includes a number of .. 2019. 9. 14.
[Spring Boot] Session과 Cache의 기본 저장소 ! 개발기간이 길진 않지만 개발하며 정말 효울적으로 사용했던게 Session과 Cache 였습니다. 데이터를 임시 저장할 때 어떤 서비스를 이용하시나요 ? Database에 저장하려니 너무 개발 코스트가 많이 드는것 같고 파일로 저장하자니 또 꺼림직하고 합니다. 이때 사용할 수 있는것이 바로 휘발성으로 사용할 수 있는 Cache와 Session입니다. Spring에서도 해당 기능을 쉽게 구현 할 수 있도록 제공해주고 있는데요. 요즘은 이런 기능을 Redis를 이용하여 많이 쓴다고 합니다. 그런데 Spring은 별도의 벤더를 지정하지 않아도 기본적으로 내장되어있는 Session과 Cache가 있습니다. 오늘은 이것들에 대해서 알아보는 시간을 가져보겠습니다. Cache cache란? : 속도가 상대적으로 느린 .. 2019. 9. 10.
[Spring]DispatcherServlet Code로 분석하기 - reqeust & response process 안녕하세요. 저는 요즘 회사에서 Java로 Ethereum Client를 만들고 있습니다. 프로젝트를 진행함에 있어 Spring MVC를 사용하였는데요. 서버로 들어올때 url에 따라 분기를 쳐주는 역할을 하는 DispatcherServlet, 원리는 들어보고 알고 있었지만 이게 코드로 어떻게 구현되어 있지? 라는 생각이 들었고, 한번 파헤쳐보기로 했습니다. 오늘은 Spring MVC의 중심이라고 할 수 있는 DispatcherServlet, 그 중에서도 request를 처리하는 방법에 대해서 코드를 따라가며 분석해 보도록 하겠습니다. DispatcherServlet ? spring 공식문서에서는 DispatcherServlet을 아래와 같이 정의하고 있습니다. Spring MVC, as many oth.. 2019. 8. 30.