본문 바로가기

Spring34

[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.
객체지향 설계의 5가지 원칙 S.O.L.I.D 안녕하세요. 오늘은 객체지향의 5가지 원칙, SOLID에 대해서 알아보도록하겠습니다. java의 특징은 많이 들어보셨을 것 같습니다. 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism) 이렇게 있죠. 이런 특징이 있는 JAVA는 객체지향(OOP) 프로그램의 특징을 가지고 있다고 합니다. 즉, 이런 특징을 이용하여 객체지향의 원칙을 구현할 수 있다는 것입니다. 오늘은 저와 객체지향을 목표로 하는 프로그램이 지켜야 할 5가지 원칙(Principle)에 대해서 알아보도록 하겠습니다. S - Single responsibility Principle 단일 책임 원칙(Single responsibility principle)이란 모든 메서드 또는 클래스는 단 하나의 책.. 2019. 11. 4.
[Spring & Design Pattern] Spring에서 발견한 Design Pattern_strategy pattern 안녕하세요. 오늘은 디자인패턴 중 꽃이라고 불리는 strategy pattern에 대해서 알아보도록 하겠습니다. strategy Pattern OOP(객체 지향)의 주요 원칙중 하나로 Open-Closed Principle(개방폐쇄원칙)이 있습니다. 간략히 말하면 "소프트웨어의 구성요소들은 확장에는 열려있어야하고, 변경에는 닫혀있어야 한다." 라는 원칙입니다. 즉, 요구사항의 변경이 있을 때 기존 구성요소의 수정은 최소화 하되 확장에는 적극적이어야 한다는 말입니다. 확장에는 기존 구성요소의 변경이 없습니다. 결합도가 낮다는 의미이기도 합니다. strategy Pattern은 개방폐쇄원칙에 잘 맞아 떨어지는 패턴입니다. 위의 이미지는 strategy 패턴을 보여주는 diagram입니다. 보면 클라이언트는 .. 2019. 10. 16.
[Spring & Design Pattern] Spring에서 발견한 디자인패턴_Singleton Pattern 안녕하세요. 오늘은 Spring에서 발견한 디자인 패턴의 3번째 시간으로 SingleTon 패턴에 대해서 알아보도록 하겠습니다. SingleTon Pattern이란? OOP에서 모든 객체들은 라이프 사이클(Life cycle)을 가지고 있습니다. 처음에 객체가 생성되고 GC에 의해서 삭제되기까지가 하나의 라이프 사이클입니다. 객체를 여러개를 만들지 않고 1개만 만들고 이를 공유해서 쓰고싶을 때가 있습니다. 이렇게 하면 객체 생성에 대한 비용 및 데이터 공유를 쉽게 할 수 있죠. 대표적인 예를 들면 DB의 Transaction을 관리하는 클래스가 그렇습니다. 이때 사용할 수 있는 pattern이 싱글톤 패턴(singleton pattern)입니다. Singleton Pattern이란 인스턴스를 1개로 제한.. 2019. 9. 23.
[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 & Design Pattern] Spring에서 발견한 디자인패턴_Proxy Pattern Spring의 특징이라고 하면 IoC(또는 DI), PSA(Portable Service Architecture) 그리고 AOP(Aspect-Oriented Programming)가 있습니다. 이 개념이 무엇인가? 에 대해서는 이번 포스팅에서 언급하진 않겠습니다. 궁금하신 분은 저의 Spring 카테고리에 하나씩 설명이 되어있으니 해당 포스팅들을 참고 부탁드립니다. 저는 다른부분에 대해서 말해보려고 합니다. AOP는 관점지형 프로그래밍으로 main기능이 아닌 기능(Logging / Transaction)을 묶음으로 하여 Main Function을 잘 구성할 수 있게 해주는 방식입니다. 따라서 비즈니스 로직의 중간에 소스코드를 삽입해야하는데 이를 지원해주는 방식은 일반적으로 3가지로 구현이 가능합니다. S.. 2019. 9. 6.
[Spring & Design Pattern] Spring에서 발견한 디자인패턴_template method pattern Spring Boot로 개발을 하다보니 그 중심이 되는 DispatcherServlet이 궁금해 졌었습니다. 그래서 이전에 DispatcherServlet의 전체적인 프로세스를 간략하게 정리한 [Spring]DispatcherServlet Code로 분석하기 - reqeust & response process 포스팅을 진행 했었습니다. DisaptcherServlet을 분석하던 중 다양한 Design Pattern이 사용됬다는 것을 확인했고 이를 포스팅 하고 싶어졌습니다. 오늘은 DispatcherServlet에서 사용된 디자인 패턴 중 하나인 Template method Pattern에 대해서 알아보도록 하겠습니다. template method pattern 서로 다른 유사한 컴포넌트가 있을때, 공통 .. 2019. 9. 4.
[java & ethereum] web3j를 통해 ethereum과 통신해보기 [ethereum]Ethereum 설치 및 실행 [ethereum]Smart Contract(Lottery 시스템) 제작 [ethereum]ethereum과 통신해보기 [ethereum]Smart Contract(Lottery 시스템)과 통신해보기 - basic [ethereum]Smart Contract(Lottery 시스템)과 통신해보기 - event & log [ethereum & java]web3j를 통해 ethereum과 통신해보기 [ethereum & java]Smart Contract(Lottery 시스템)과 web3j를 통해 통신해보기 - basic Smart Contract(Lottery 시스템)과 web3j를 통해 통신해보기 - event & log 저번시간까지 우리는 POST 통신을 .. 2019. 9. 2.
[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.