일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- dto
- Controller
- 음수가 포함된 최단경로
- 우선순위큐
- disjoint set
- spring boot
- 유니온 파인드
- 동적계획법
- 최단경로
- 다익스트라
- 벨만 포드 알고리즘
- 엔테크서비스
- Android Studio
- Django
- 기술면접
- scikit-learn
- onclick
- BufferedReader
- 플로이드 와샬
- compiler
- clean code
- top-down
- bottom-up
- 직무면접
- Python
- Java
- 코딩테스트
- kmeans
- union-find
- 거쳐가는 정점
- Today
- Total
목록Developer's_til/스프링 프레임워크 (25)
춤추는 개발자
지금까지 스프링의 IoC를 적용한 DaoFactory와 UserDao를 구현했습니다. 이번에는 IoC를 적용하기 전과 후의 차이점을 확인하고, 싱글톤에 대해 알아보는 시간을 갖겠습니다. 먼저, 앞에서 작성했던 DaoFactory를 다시 한번 사용하겠습니다. 만약, 어플리케이션 컨텍스트를 적용하기 전의 DaoFactory에 있는 UserDao() 메서드를 두번 호출하고 주소값을 출력하면 어떻게 될까요? DaoFactory factory = new DaoFactory(); UserDao dao1 = factory.userDao(); UserDao dao2 = factory.userDao(); System.out.println(dao1); System.out.println(dao2); // spring.dao..
앞선 포스팅에서 DAO를 활용한 코드의 분리와 확장에 대해 알아보았습니다. IoC에 대한 이해를 돕기 위해 초기 DAO코드를 예로 들어보겠습니다. 초기 UserDao를 보면 테스트용 main() 메서드는 UserDao 클래스의 오브젝트를 직접 생성 및 만들어진 오브젝트의 메서드를 사용. UserDao는 자신이 사용한 ConnectionMaker의 구현 클래스를 자신이 결정하고, 그 오브젝트를 필요한 시점에 생성하여 각 메서드에 맞게 사용. 모든 오브젝트가 능동적으로 자신이 사용할 클래스를 결정하고, 언제 어떻게 그 오브젝트를 만들지 스스로 관장합니다. 이렇게 모든 종류의 작업을 사용하는 쪽에서 제어하는 구조입니다. 제어의 역전(IoC)이란 이런 제어 흐름의 개념을 거꾸로 뒤집는 것을 의미합니다. 지난 포..
Spring 프레임워크에서 가장 많은 관심을 두는 대상은 오브젝트 즉, 객체입니다. 어플리케이션에서 오브젝트가 생성되면 다른 오브젝트와 관계를 맺고, 사용되고, 소멸되기까지 전 과정을 진지하게 생각해볼 필요가 있습니다. 특히, 오브젝트의 기술적인 특징과 사용 방법 등을 고민하는 설계 단계부터 시작하여 디자인 패턴, 리팩토링, 단위 테스트와 같은 구현 단계까지 다양한 응용 기술과 지식이 요구됩니다. 이번 포스팅에서는 DAO코드를 작성하며 오브젝트의 설계과 구현, 개선 방향까지 단계적으로 나아가는 시간을 갖겠습니다. 📢DAO란? DB에 접근하여 데이터를 조회하거나 수정하는 기능을 담당하는 오브젝트 ✅ DAO 코드 작성하기 먼저, 예제로 사용될 코드를 작성하겠습니다. 사용자 정보를 저장할 User클래스를 아래..
지난 포스팅에서 Travics CI를 활용한 배포 자동화 환경을 구축했습니다. 코드를 커밋/푸쉬하면 자동으로 빌드&배포를 통해 완벽한 프로젝트를 유지할 수 있었습니다. 하지만, 새로운 Jar 파일을 실행 및 배포하는 동안, 기존 Jar를 종료시키기 때문에 서비스가 잠시 중단된다는 문제가 남아있습니다. 이번 포스팅에서는 24시간동안 운영되어야하는 서비스를 위한 중단 없는 배포에 대해 알아보겠습니다. ✅ 무중단 배포 무중단 배포 방식에는 몇 가지가 있습니다. AWS에서 블루/그린 무중단 배포 도커를 이용한 웹서비스 무중단 배포 L4스위치를 이용한 무중단 배포 Nginx를 이용한 무중단 배포 이 중 오픈소스 SW인 Nginx를 활용합니다. ✅ Nginx의 무중단 배포 Nginx는 가벼움과 높은 성능을 목표로 ..
교재 8장 EC2 서버에서 프로젝트를 배포한 상태까지 완료했다는 가정하에 진행하겠습니다. 지금까지 쉘 스크립트로 작성된 deploy.sh로 직접 스크립트를 실행하여 푸시된 코드를 배포했습니다. 이러한 과정을 자동으로 만들기 위해 CI/CD 환경을 구축하고, Github에 푸시된 코드를 자동으로 배포하는 과정을 구현하겠습니다. ✅ CI & CD란? CI(Continuous Integration - 지속적인 통합) 코드 버전 관리를 하는 VCS 시스템(Git, SVN 등)에 PUSH가 되면 자동으로 테스트와 빌드가 수행되어 안정적인 배포 파일을 만드는 과정 코드 레벨의 테스트까지 자동화 어플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 & 테스트되어 공유 저장소에 통합, 여러 명의 개발자가 동시에..
✅ Spring Security란? 스프링 기반 어플리케이션의 보안을 위한 표준으로 막강한 인증과 인가 기능을 가진 프레임워크를 말합니다. 주로 서블릿 필터와 필터체인으로 구성된 위임모델을 사용합니다. 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안관련 로직을 작성하지 않아도 된다는 장점이 있습니다. 또한, 확장성을 고려한 프레임워크로 다양한 요구사항을 쉽게 추가 및 변경할 수 있습니다. 보안용어 Spring Security 레퍼런스나 기술 블로그를 보면, 전문 용어가 많습니다. 빠른 이해를 위해 아래 용어들을 한번 쯤은 익히고 가는 것을 추천드립니다. 접근 주체(principal): 보호된 리소스에 접근하는 대상. 인증(Authentication): 보호된 리소스..
지난 시간에 이어 API의 기본 CRUD를 구현하며 포스트이 생성시간/수정시간을 자동화하는 JPA Auditing을 활용합니다. 해당 포스트에서는 API를 개발하는 과정에서 특정 Annotation의 역할, Entity 대신 Dto를 생성/사용하는 이유 등 여러 상황들을 이해하고 넘어가는 것이 중요합니다. API를 만들기 위한 3개의 Class Request 데이터를 받을 Dto API 요청을 받을 Controller 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service ✅ Spring 웹 계층 API를 구현하기 전, Spring 웹 계층에 간단히 알아보고 넘어가겠습니다. Web Layer 흔히 사용하는 컨트롤러(@Controller)와 JSP/Freemaker 등의 뷰 템플릿 영역 이외에도 필터(..