본문 바로가기

Develop

(317)
[SpringBoot] AutoConfiguration Springboot의 autoConfiguration이란? 자동으로 환경설정을 해주는 것이다. 어떤 API, Component를 작성하기 위해서 설정 클래스를 만들고 properties에 설정하고 등등 이러한 어느정도 규격화 되어있는 설정들을 스프링 부트에서 해주는 것이다. ex. mybatis, connection pool 등등 AutoConfiguration 장점 -버전 관리 -초기 빈호출을 등록안해도 된다, 개발 편리성 증가 실행 주체 EnableAutoConfiguration SpringBootApplication을 사용하면 자동환경설정 기능 사용할 수 있다. 해당 상위에 두개의 어노테이션이 있다면, Import AutoConfigurationImportSelector가 호출된다. 호출할 빈들을 ..
[Spring] JWT란? JWT(JSON web Token)이란? Json 포맷을 이용하여, 사용자에 대한 속성을 저장하는 Claim기반의 Web Token이다. JWT는 토큰 자체를 정보로 사용하는 Self Contained 방식으로 정보를 안전하게 전달 한다. 주로, 회원 인증이나 정보 전달에 사용되는 JWT는 아래의 로직으로 구현된다. Header, Payload, Signature 3개의 부분으로 구성되어있어, 쿠키나 세션을 이용한 인증보다 안전하고 효율적이다. 일반적으로 Request Header에 담겨져 오기 때문에, Header값을 확인하여 가져올 수 있다. 장점 -중앙 인증 서버, 저장소에 대한 의존성이 없어서 수평 확장에 유리 -Base64 URL Safe Encoding이라 URL,Cookie, Header 어..
[Spring] Web Server와 Web Application Server 차이 페이지는 static page와 dynamic page로 나뉜다. -Static Pages * web server는 파일 경로 이름을 받아 경로와 일치하는 file contents 를 반환한다. * 항상 동일한 페이지를 반환한다. * image,html,css javascript 파일과 같이 컴퓨터에 저장되어있는 파일들 -Dynamic Pages * 인자의 내용에 맞게 동적인 contents를 반환한다. * 즉 웹서버에 의해서실행되는 프로그램을 통해서 만들어진 결과, Servlet : Was위에서 돌아가는 java program Web Server - Web 서버가 설치되어있는 컴퓨터 -웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적 컨텐츠를 제공하는 컴퓨터 프로그램 - 정적인 컨텐츠 제공 - W..
[Spring] 스프링 디자인 패턴 1. 프록시 패턴 프록시 패턴은 어떤 객체에 대한 접근을 제어하기 위한 용도, 실제 객체의 메서드를 호출하면, 호출 중간에 가로채는 패턴이다. 제어흐름을 조정하기 위해 중간에 대리자를 두는 패턴이다. 스프링에선 AOP를 통해, 이런 공통 적인 기능을 분리해, 필요한 곳에서 재사용을 한다. 2.싱글턴 패턴 애플리케이션이 시작될때 어떤 클래스가 최초 한번만 메모리를 할당하고 메모리에 인스턴스를 만들어 사용하는 디자인 패턴으로 생성자가 여러번 호출해도, 실제 생성객체는 하나이고 이 객체를 반환하는 패턴 3.템플릿 메소드 패턴 슈퍼클래스에기본적인 로직 흐름을 작성, 일부 변경이 필요한 부분을 서브클래스에서 추상메소드로 오버라이딩하여 사용할 수 있는 형태로, 서브클래스에서 필요에 맞게 이를 구현하여 사용하는 디자..
[Spring] 빈 라이프 사이클 스프링의 빈 라이프 싸이클은 아래와 같다. 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸 전 콜백 -> 스프링 종료 해당 사이클에서 사용할 수 있는 콜백 함수들이 있다. * 초기화 콜백 : 빈이 생성되고 빈의 의존관계가 주입이 완료된 이후 호출 * 소멸 전 콜백 : 빈이 소멸되기 전에 호출 스프링은 3가지 방법으로 빈 생명주기 콜백을 지원한다. -인터페이스 (InitializingBean, DisposableBean) 메소드 구현 스프링 전용 인터페이스에 의존한다. 초기화,소멸 메서드의 이름을 변경할 수 없다. 고칠수없는 외부 라이브러리에 적용 불가 - 설정 정보에 초기화 메소드, 종료 메소드 지정 @PostConstruct, PreDestroy 어..
[Spring] 싱글턴은 쓰레드에 안전한가? 안전하지 않다. 여러 쓰레드에서 상태값을 바꿀수있도록 싱글턴 인스턴스를 stateFul하게 설계하면 다른 쓰레드에서 상태를 변경, 쓰레드마다 값이 다르고, 운영 이슈가 발생하게 된다. 따라서 싱글턴 인스턴스는 stateless하게 설계를 해야한다.
[Spring] SingleTon이란 싱글턴 패턴 -소프트웨어 디자인 패턴에서 싱글턴 패턴을 따르는 클래스는 생성자가 여러차례 호출되어도, 실제로 생성되는 객체는 하나이고, 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 싱글턴 패턴을 사용하는 이유 만약 우리가 만들었던 DI컨테이너인 요청을 할 때마다 새로운 객체를 생성한다 요청이 엄청나게 많은 트래픽 사이트에서는 객체를 새로 생성하게 되면 메모리 낭비가 심하다 구현 예제 -static 객체를 통해서 1개의 객체만 생성 할수 있도록 한다. -static 메소드를 통해, 외부에서 생성할수있도록 제한한다. -new 연산자를 통해서 객체를 만드는 것을 private 생성자를 통해서 제한한다. 싱글턴 패턴 문제점 -싱글턴 패턴을 구현하는 코드 자체가 많다. (값이나 특정 속성에 따라서 별..
[Spring] ApplicaitonContext와 BeanFactory 어플리케이션컨텍스트는 빈 팩토리에 여러 기능을 추가한 것을 의미한다. 실질적으로 ApplicationContext는 BeanFactory 인터페이스를 상속 받고있다. BeanFactory는 빈을 사용할때 빈을 로딩시킨다. ApplicationContext는 실행시 모든 빈을 로딩한다.