일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- K8S
- Axon framework
- 자바공부
- 플러터 공부
- Kafka
- 스프링부트
- 프로그래머스
- 스프링공부
- querydsl
- nestjs
- JPA공부
- JPA예제
- nestjs공부
- 기술공부
- JPA 공부
- 플러터 개발
- 스프링
- JPA
- 기술면접공부
- 코테공부
- 자료구조공부
- DDD
- 코테준비
- Flutter
- 카프카
- 스프링 공부
- nestjs스터디
- 스프링부트공부
- JPA스터디
- 알고리즘공부
- Today
- Total
목록Develop (320)
DevBoi
1. 정의 비즈니스 로직이 트랜잭션 처리를 필요로 할때 트랜잭션 처리 코드가 비즈니스 로직과 공존한다면, 코드 중복이 발생, 비즈니스 로직에 집중 또한 힘들어진다. @Transactional은 이러한 문제를 해결해주는 Spring이 제공하는 어노테이션으로 트랜잭션을 메서드 또는 클래스에 명시하게 되면, 특정 메서드 또는 클래스가 제공하는 모든 메서드에 대해 내부적으로 AOP를 통해 트랜잭션 처리코드가 전후로 수행된다. Transactional은 두가지 방식으로 처리가된다 -Jdk dynamic Proxy (interface 구현 필요, 해당 인터페이스를 추상메서드로 오버라이딩해서 프록시 객체를 런타임시, dynamic하게 생성) -CGLIB (인터페이스없는 타겟을 상속받아서, 프록시 객체를 만든다. 바이..
@Requestparam 1:1로 값을 바인딩 해준다. (Get방식만 지원) 1:1로 받는값이 매서드 매게변수의 생성자의 인자와 일치하면 객체를 바로 바인드 한다. 잘못된 파라미터값이 오면 400발생 바인딩 해오는 값과 일치하면 인스턴스를 그냥 주입해주고, 아니라면 별도 이름을 지정, 해당 이름 과 같다면 주입해준다. @ModelAttribute 여러 파라미터 매게변수를 바인딩해준다. 단일 값부터 오브젝트까지 다양하다. setter를 사용해 담아주기 때문에 매게변수의 바인딩을 받는 필드는 setter가 있어야 한다. 타입변환에 실패하더라도 작업은 계속된다. 메서드 인자의 model의 attribute에 접근 할 수 있다. 파라미터 이름을 명시하지 않으면 필드명과 일치하는 필드의 Setter를 이용해서 데..
web.xml web.xml은 설정을 위한 설정 파일이다. WAS가 처음 구동될때 web.xml을 읽어, 웹 애플리케이션 설정을 구성한다. DispatcherServlet을 등록해주면서 스프링 설정 파일을 지정한다. DispatcherServlet은 초기화 과정에서 지정된 설정 파일을 이용해 스프링 컨테이너를 초기화 시킨다. web.xml은 초기 로드시 로드해야하는 xml들에 대한 정의 이다. WAS가 최초로 구동될때 각종 설정을 정의 해주는, 설정에 대한 경로를 정의해주는 파일이다. web.xml에서 두가지 전부 로드된다. root-context servlet-context *root-context root-context에 등록되는 빈들은 모든 컨텍스트에서 사용가능하다. service,dao포함, 웹 ..
Maven은 자바용 프로젝트 관리도구로, Apache Ant의 대안으로 만들어졌다. Maven은 Ant와 마찬가지로 프로젝트 전체적인 라이프사이클을 관리하는 도구이다. Maven은 필요한 라이브러리를 특정 문서에 (pom.xml)에 정의해놓으면 내가 사용할 라이브러리뿐아니라 해당 라이브러리가 작동하는데 필요한 다른 라이브러리까지 관리하여, 네트워크를 통해 자동 다운을 받아준다. Maven은 중앙 저장소를 통한 자동 의존성 관리를 해주는 곳이라고 보면된다. 라이브러리를 공유하는 파일서버라고도 할수 있다. ant라는 것에 비해 라이브러리 의존관리가 되어서 많이 쓰이고.간단한 설정을 통한 배포관리가 가능하다. 메이븐은 프레임워크이기 때문에 동작방식이 정해져있고 미리 정의하고있는 빌드 순서가 있다. 이를 라이프..
스프링 부트 프로젝트 시작에는 pom.xml에 버전관련 내용은 없다. org.springframework.boot spring-boot-starter-parent 2.0.3.RELEASE 해당 내용이 버전 관리를 해주는데, 타고들어가면 알수 있다. spring-boot-starter-parent 폼파일 하위에는 spring-boot-dependencies 이있고, 해당 영역을 타고 들어가면,Spring-boot-dependcies라고 시작하는 이름의 파일을 볼수 있다. dependencyManagement, dependencyManager 영역에 모든 버전 정보들이 명시 되어있다.따라서 직접 버전을 명시하지 않아도, 저곳에서 버전정보를 가져오게 되고, 버전을 직접 명시를 할 수도있지만가급적 충돌문제로인해..
Springboot의 autoConfiguration이란? 자동으로 환경설정을 해주는 것이다. 어떤 API, Component를 작성하기 위해서 설정 클래스를 만들고 properties에 설정하고 등등 이러한 어느정도 규격화 되어있는 설정들을 스프링 부트에서 해주는 것이다. ex. mybatis, connection pool 등등 AutoConfiguration 장점 -버전 관리 -초기 빈호출을 등록안해도 된다, 개발 편리성 증가 실행 주체 EnableAutoConfiguration SpringBootApplication을 사용하면 자동환경설정 기능 사용할 수 있다. 해당 상위에 두개의 어노테이션이 있다면, Import AutoConfigurationImportSelector가 호출된다. 호출할 빈들을 ..
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 어..
페이지는 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..
1. 프록시 패턴 프록시 패턴은 어떤 객체에 대한 접근을 제어하기 위한 용도, 실제 객체의 메서드를 호출하면, 호출 중간에 가로채는 패턴이다. 제어흐름을 조정하기 위해 중간에 대리자를 두는 패턴이다. 스프링에선 AOP를 통해, 이런 공통 적인 기능을 분리해, 필요한 곳에서 재사용을 한다. 2.싱글턴 패턴 애플리케이션이 시작될때 어떤 클래스가 최초 한번만 메모리를 할당하고 메모리에 인스턴스를 만들어 사용하는 디자인 패턴으로 생성자가 여러번 호출해도, 실제 생성객체는 하나이고 이 객체를 반환하는 패턴 3.템플릿 메소드 패턴 슈퍼클래스에기본적인 로직 흐름을 작성, 일부 변경이 필요한 부분을 서브클래스에서 추상메소드로 오버라이딩하여 사용할 수 있는 형태로, 서브클래스에서 필요에 맞게 이를 구현하여 사용하는 디자..
스프링의 빈 라이프 싸이클은 아래와 같다. 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸 전 콜백 -> 스프링 종료 해당 사이클에서 사용할 수 있는 콜백 함수들이 있다. * 초기화 콜백 : 빈이 생성되고 빈의 의존관계가 주입이 완료된 이후 호출 * 소멸 전 콜백 : 빈이 소멸되기 전에 호출 스프링은 3가지 방법으로 빈 생명주기 콜백을 지원한다. -인터페이스 (InitializingBean, DisposableBean) 메소드 구현 스프링 전용 인터페이스에 의존한다. 초기화,소멸 메서드의 이름을 변경할 수 없다. 고칠수없는 외부 라이브러리에 적용 불가 - 설정 정보에 초기화 메소드, 종료 메소드 지정 @PostConstruct, PreDestroy 어..