일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- Axon framework
- querydsl
- JPA스터디
- Kafka
- JPA
- 자바공부
- 코테준비
- DDD
- nestjs
- 스프링공부
- 기술면접공부
- 스프링부트
- 스프링부트공부
- 기술공부
- 플러터 개발
- nestjs공부
- 알고리즘공부
- JPA예제
- nestjs스터디
- 스프링
- K8S
- 코테공부
- 자료구조공부
- JPA 공부
- 플러터 공부
- 카프카
- JPA공부
- Flutter
- 스프링 공부
- Today
- Total
목록분류 전체보기 (715)
DevBoi
initBinder는 컨트롤러 레벨에서 들어오는 요청에 다양한 설정이 가능하다 WebDataBinder를 파라미터로 받는 메소드를 사용하고, 특정 컨트롤러 단에서 바인딩이나, 검증 설정을 변경하고 싶을때 사용한다. @InitBinder(“Event”) 요로케 쓰면 Event객체에 대해서만 가능하다 추가로, webDataBinder를 통해서, 커스텀 에디터(특정 날짜필터)등록이 가능하다 만약에 , id에 대한 바인딩을 막고싶다면, 해당 과 같이 선언하게 되면 바인딩은 Null로 잡히게된다. 만약에 특정 객체에 대해서 검증에 대한 벨리데이션을 추가하고싶다면, support에 정의하고 validate에서 사용하면된다. 그리고 이닛바인더에서, event로 한정하고 벨리데이터를 추가하면된다. 벨리데이터를 빈으로 ..
다국어 처리에 대한 값을 지정할 수있다. 예를 들면, Session에 로케일 정보를 넣을수 있는데 이런식으로 사용할 수 있다. 스프링 5부터는 LocaleResolver이라는 인터페이스를 사용할 수 있다. 구현체로는 SessionLocaleResolver 가 있는데 이는 httpsession에 locale정보를 저장한다. 컨트롤러에서 직접 세션에 로케일 정보를 넣어줄 수도있지만 인터셉터로 이를 구현할 수 도있다. 단, 인터셉터로 이를 구현할때는, 파라미터로 언어값을 넘겨줘야한다. 이런식으로 인터셉터에 대한 빈 선언과, 인터셉터에 추가를 해준다. 메시지 파일은 이렇게 basenames라는 이름으로, message.messageSource로 하게되면, 기본 이름이 된다. 이는 다국어에 필요한 파일이 50개라..
싱글턴이란 객체를 하나만 생성하는 것이다. 인터페이스를 구현한 싱글턴 객체가 아니라면 , mock을 사용하여 테스트 하기 어렵다. 내부 인스턴스를 static final로 두고, private 생성자로서 사용한다면, 내부 static 인스턴스가 초기화 될떄 딱 한번만 privatee 생성자가 돌고, 이 인자는 하나뿐임을 보장한다. 유일하게 인스턴스 get 부분만 public 인경우, instance를 하나만 가지고 있고 이를 return 하는 것을 보장할 수있다. (final) 장점 향후 확장성이 있다. 다른 인스턴스(새로운 인스턴스)가 필요하다면 언제든지 신규 메소드를 추가해서 사용할 수 있다 리플렉션 방어가 된다. setAccessible 를 사용해 private 생성자에 접근 할 수 있는데 이떄 i..
자바 빈즈 패턴 - 생성자를 파라미터 없이 생성하고, setter를 사용해서 관리 하나의 객체를 생성하고 여러개의 메서드를 사용해야한다. 점층적 생성자 - 속성이 늘어날떄마다 생성자 인수를 하나씩 늘려서 사용 인자가 늘어날떄마다 추가 해줘야하는 값이 계속 늘어난다. 빌더 패턴 -빌더 패턴은 넘기는 매게 변수에 따라 자동으로 다른 객체를 생성할 수도 있고 메서드 체이닝으로 어떤 변수에 어떤값을 넣을지를 명시적으로 선언하여 확실하게 객체를 생성할 수있다. 빌더 생성비용때문에, 인자가 4개 이상부터 값어치를 하고, 인자가 많은 객체나 대부분의 인자가 선택적일때 사용하면 유용하다
장점 1. 이름을 가질 수 있다. 2. 같은 파라미터를 가지는 생성자를 여러개 만들수 있다. 3.호출 할떄마다 인스턴스를 새로 생성하지 않아도된다. (미리 만들어놓은 객체를 반환할 수 있다.) 4. 리턴타입의 하위 타입 객체를 반환할 수 있다. 5.입력 매게 변수에 따라 매번 다른 타입의 클래스를 반환할 수 있다. 단점 -상속이 불가 -일반 메서드와 차이가 없기 때문에 찾는데 어려움이 있다 (명명 규칙 of,From, valueof 를 관례상 사용하긴 함)
리플렉션 class객체를 가져온다.생성자를 가져온다.메소드를 가져온다필드를 가져온다. 장점 -프로그램에서 임의의 클래스에 접근 할 수 있다. 생성자,메서드,필드를 조작할 수 있다. 컴파일 당시 존재하지 않던 클래스도 이용할 수 있다. 단점 컴파일 타임 타입 검사를 이용할 수 없다 코드가 지저분 해지고 장황해준다. 성능이 떨어진다. 일반 메서드 호출보다, 리플렉션을 이용한 메서드 호출이 훨씬 느리다. 즉, 속도가 느리고 컴파일 때 잡을수없고, 지저분 해져서 잘 안쓴다 인터페이스는 다중구현이 가능하고, 개발시간 단축(여러명이서할때, 인터페이스를 주고 해당 각자 별도로 구현가능) 인터페이스는 구현을 강제화 하기 때문에, 구현체들의 통일성을 맞출수도있다. 클래스간 결합도를 낮춘다. 단순히 인터페이스만 갈아끼우면 끝
String은 new를 사용해서 새롭게 인스턴스를 만들고, 메모리에 올리기 때문에 다른 주소값을 참조하기에 == 연관시에 false가 리턴된다. 예를 들어서 String a. = "3" String b = "4" String c = new String("7") 이면 a == b 이지만 a !=c 이다. String 은 wrapper class이지만, 같은 내용에 대해서는 같은 주소를 바라보게 끔 한다 String constant pool에 등록되기 때문이고 다른 주소값을 보는 c와는 같지 않다는 것을 알 수 있다. hashcode는 해당 주소값을 hashFunction한 값을 출력한다. object에 있는 equals는 해시코드에 대한 비교를 하고 결과를 return한다. 만약에 사용자가 임의로 만든 o..
엔진엑스는 동시접속 처리에 특화된 웹 서버 프로그램이다. 아파치 보다 동작이 단순하고, 전달자 역할만 하기 때문에 동시접속 처리에 특화 되어있다. 웹 서버의 역할은? 1) 정적 컨텐츠 전달 웹서버의 역할은 HTML,Css,js이미지 와 같은 정보를 웹 브라우저에 전송하는 역할을 한다. 2)리버스 프록시 nginx.conf파일에서 location지시어를 사용하여 요청을 배분한다. 클라이언트는 가짜 서버에 요청하면, 프록시 서버가 배후 서버로 부터 데이터를 가져온다. 프록시 서버가 Nginx, 리버스 서버가 응용프로그램 서버를 의미한다. nginx.conf -Nginx기본동작이외, 파일 확장자의 MIME type , 가상 호스트, 리버스 프록시를 위한 설정 파일들이 포함 접속자수, 동작 프로세스 수 등 퍼포..
prehandle, posthandle, afterCompletion Filter의 경우, DispatcherServlet이 실행되기 전에 수행되므로, Spring Context에 접근하기 어렵다. 하지만 인터셉터의 경우는, Dispatcher수행 이후에 실행이된다 따라서, Spring Context에 용이하게 접근할 수 있다. Spring 에서 작성위치는 servlet-context에 작성한다. Spring boot에서는 WebMvcConfigurerAdapter를 상속, 어떤 컨트롤러를 어떤 url에 매핑할지 정의 인터셉터는 handlerInterceptorAdapter를 상속 받아서 구현 (deprecated) -> HandlerInterceptor를 impl해서 사용 url 기반으로 제어한다. (..
log4j -> logback 성능이 더 좋고, 메모리도 적게 사용한다. Spring profile을 사용할 수 있다. springboot starter-web에 포함 log4j -> logback -> log4j2 로 진화했다. @SLF4J는 프레임워크 대부분에서 어떤 방식으로든 구현되는 표준화된 API를 제공한다. 이 API를 통해 코드 안바꾸고, 로깅 프레임워크를 변경할 수 있다. sysout은? PrintStream 클래스의 println()의 내부구조에 동기화처리, 쓰레드당 한개만 쓸수 있다. 그래서 쓰레드하나가 쓰고있으면, 다른 쓰레드에서 Block이 걸리게된다. -정리- log4j와 같은 다양한 로깅 프레임워크에 대한 추상화 역할을 하는 라이브러리이다. 컴파일 시 하나의 로깅 프레임워크와 바..