본문 바로가기

SERVER

(14)
[spring-core-3] 싱글톤 컨테이너 인프런 [스프링 핵심 원리 - 기본편]을 정리한 내용입니다. 싱글톤 컨테이너 문제 정의: 기존의 스프링이 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때마다 객체를 새로 생성해도 반환해줬다. 이 경우 트래픽이 클 수록 많은 객체가 생성되고 소멸되며 메모리 낭비가 심한 문제가 있고, 따라서 해결하기 위해 싱글톤 패턴을 사용한다. 싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴. //1. static 영역에 객체를 딱 1개만 생성해둔다. private static final SingletonService instance = new SingletonService(); //2. public으로 열어서 객체 인스턴스가 필요하면 이 static 메소드를 통해서만 조회하도..
[spring-core-2] 스프링 컨테이너와 스프링 빈 인프런 [스프링 핵심 원리 - 기본편]을 정리한 내용입니다. 스프링 컨테이너 ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class) - ApplicationContext를 스프링 컨테이너라 한다. - ApplicationContext는 인터페이스이고, AnnotationConfigApplicationContext는 구현체이다. 즉, 역할과 구현으로 나누어 다형성을 적용한 것이다. - 역할과 구현으로 나누었기 때문에 스프링 컨테이너는 xml 기반으로 만들 수도 있고, 애노테이션 기반으로 자바 설정 클래스를 만들 수도 있다. 다양한 설정 형식 지원 - 자바코드, XML - 애노테이션 기반 자바 코드 설정 사용 Applic..
[spring-core-1] 스프링 핵심 원리 이해 인프런 [스프링 핵심 원리 - 기본편]을 정리한 내용입니다. 1. 객체 지향 설계와 스프링 스프링이란? 스프링 프레임워크, 스프링 부트 등을 포함한 스프링 생태계 전체를 아우르는 말. 스프링부트? 스프링을 편리하게 사용할 수 있도록 지원 Tomcat 같은 웹서버를 내장, 별도의 웹서버를 설치할 필요 x starter 종속성 제공으로 쉬운 빌드 구성 가능 프로덕션 준비 기능 제공 관례에 의한 간결한 설정 스프링의 핵심 스프링은 자바 언어 기반의 프레임워크로 객체 지향 언어가 가진 강력한 특징을 살려낼 수 있는 프레임워크. 좋은 객체 지향 프로그래밍이란? 객체 지향 프로그래밍 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파..
[Django] 인스타그램 클론 코딩 Serializer 적용 및 API TEST하기 모델 선택 및 데이터 삽입 선택한 모델: Post 모델. (Post 모델과 1:N 관계를 갖는 Comment, Like, File 모델) Serializer Nested Serializer로 post와 post_likes, comments, post_files 관계 표현. Serializer method field로 author(User 모델)의 field인 nickname을 가져와 사용. class PostSerializer(serializers.ModelSerializer): author_name = serializers.SerializerMethodField() likes_count = serializers.SerializerMethodField() comments_count = serializer..
[Django] 인스타그램 클론 코딩 모델 설계 1. 모델 설계 1) User: Django에서 지원하는 AbstractBaseUser를 상속 AbstractBaseUser: password, last_login, is_active 필드 제공. django가 제공해주는 필드를 이용하면서 사용자 정의 field 추가를 위해 사용. (AbstractUser보다 제공 필드가 적어 더 유연성이 있다) login id로 username이 아닌 nickname 사용. (USERNAME_FIELD='nickname'으로 변경. 애초에 username을 nickname 처럼 받아써도 되겠으나 헷갈리지않도록 구분했다.) 공식문서: https://docs.djangoproject.com/en/dev/topics/auth/customizing/#a-full-example..
[Django] Django 앱 작성하기 tutorial (part1~part4) django tutorial 문서(part1~part4)를 보고 정리한 글입니다. Part 1 1. 프로젝트 생성 및 실행 # mysite 프로젝트 생성 $ django-admin startproject mysite # 설문조사 앱(polls) 생성 $ python manage.py startapp polls # 서버 실행 $ python manage.py runserver 간단한 view 작성 후, 이 view를 호출하기 위한 URLconf를 생성 및 작성. 이후 최상위 URLconf(mysite/urls.py)에서 polls.url 모듈을 바라볼 수 있게 설정. -> 서버 실행해서 view 호출 확인. - include() include() 함수는 다른 URLconf들을 참조할 수 있도록 도와준다. ..
[Django] Django 앱 작성하기 tutorial (part1) django tutorial 문서(part1)를 보고 정리한 글입니다. Part 1. 설문조사 앱 프로젝트 만들기 먼저 프로젝트는 파이참 가상환경에 진입해서 실행하였다. 1. 프로젝트를 생성할 디렉토리에서 mysite 디렉토리 생성 $ django-admin startproject mysite 2. 앱 만들기. manage.py가 존재하는 디렉토리에서 설문조사 앱 생성 $ python manage.py startapp polls 3. 첫번째 view를 작성해보자. polls/views.py에 view를 작성할 수 있다. from django.http import HttpResponse def index(request): return HttpResponse("Hello, world. You're at th..
[Spring] Component와 @ComponentScan @ComponentScan 스프링의 빈 등록 방법에 대해서 얘기할 때 언급되었던 Component와 @ComponentScan에 대해 알아보자. 스프링부트에서는 @SpringBootApplication 애노테이션을 이용해서 빈을 등록하고 관리한다. 따라서 이전 방식이었던 xml 파일이나 java config 파일을 만들어 사용할 필요가 없었다! (사실 이전 방식에 대해 언급하지 않고 넘어갔어서 이 글을 참고하시길...) 그 이유는 @SpringBootApplication에 이미 @ComponentScan과 @Configuration이 있기때문에 이 자체가 Bean 설정 파일이기 때문이다. 이를 자세히 보면, 다음과 같다. @Target(ElementType.TYPE) @Retention(Retention..