분류 전체보기
-
spring boot 의 spring data nosql (1)카테고리 없음 2023. 4. 22. 14:40
오랜만에 글을 남긴다. 개인적으로 하는 플젝이 있어서 거기에 당분간 집중해야 할 듯 해서 글을 자주 못남길거 같다. 물론 자주 글을 쓰면 좋지만.. 오늘은 Spring boot에서 기본적으로 지원해주는 nosql이 어떤것들이 있는지 살펴보도록 하자. Spring boot는 꽤 많은 nosql을 기본적으로 지원해주고 있다. 유명한 nosql들은 거의 다 지원해주니 만약 자신이 원하는 nosql이 없다면 만들어서 Spring boot에 기여해도 괜찮은 방법이라고 생각한다. Redis redis 경우에는 java 진영에서 redis 클라이언트로 유명한 jedis를 사용한다. maven 디펜더시만 받는 다면 몇몇가지의 빈이 자동으로 등록된다. org.springframework.boot spring-boot-s..
-
Spring Controller 파라미터 타입카테고리 없음 2023. 4. 22. 14:40
오늘 소개할 내용은 Spring의 Controller에서 사용할 수 있는 파라미터 타입들을 알아보도록 하자. . Spring에서 Controller로 받을 수 있는 파라미터들이 다양한 타입들이 존재하는데 이는 Object 혹은 어노테이션등으로 선언하면 자동으로 Spring이 그에 맞게 변환해주고 있다. 다 알아볼 수 는 없겠지만 자주 사용하는 부분 위주로 최대한 많이 살펴보도록 하자. 필자의 경우에는 Controller에서 servlet API를 거의 사용하지 않는다. 예를들어 HttpServletRequest, HttpServletResponse 이와 같은 servlet과 관련있는 API는 되도록이면 작성하지 않으려고 노력한다. 그 이유는 몇가지 이유가 있지만 나중에 혹시 기회가 되면 다뤄보기로 하고 ..
-
ImportSelector 와 ImportBeanDefinitionRegistrar카테고리 없음 2023. 4. 22. 14:40
오늘은 Spring의 설정과 관련된 이야기를 해볼 예정이다. Spring 에서는 설정 정보들을 커스텀하고 좀 더 확장성 있게 변경할 수 있는 방법들을 제공한다. 그 중에 ImportAware, ImportSelector, ImportBeanDefinitionRegistrar 인터페이스가 있는데 ImportAware는 간단하고 저번에 포스팅한 부분이 있어서 제외 하고 오늘은 ImportSelector와 ImportBeanDefinitionRegistrar 대해서 알아보도록 하자. ImportSelector @Enable* 어노테이션으로 우리는 (Enable* 을 모른다면 다른 글들을 참고하거나 예전에 포스팅한 글이 있으니 참고하면 되겠다) 필요에 따라 미리 설정한 설정정보들을 확장하거나 변경할 수 있었다...
-
Spring bean LifeCycle카테고리 없음 2023. 4. 22. 14:40
오늘은 Spring의 Bean 메서드 생명주기에 대해서 알아보자. Spring의 Bean 메서드 생명주기는 여러방법으로 초기화 및 제거를 할 수 있는데 그 방법에 대해서 알아보고 어떠한 생명주기를 갖는지도 알아보자. 초기화 메서드 초기화 메서드는 빈 Object가 생성되고 DI 작업까지 마친다음 실행되는 메서드이다. 기본적으로 Object의 초기화작업은 생성자에서 진행하지만 DI를 통해 빈이 주입된 후에 초기화할 작업이 있으면 초기화 메서드를 이용해서 초기화를 진행하면 된다. InitializingBean Spring에 기본적으로 제공해주는 InitializingBean 인터페이스를 이용해서 초기화 작업을 할 수 있다. @Service public class LifeCycleTest implements ..
-
java의 몇가지 이야기카테고리 없음 2023. 4. 22. 14:40
오늘은 뭘 할려고 하는건 아니고 자바와 관련해서 몇가지 이야기를 해보려고 한다. 많이 중요한 내용은 아니지만(물론 알면 좋지만) 다시 처음으로 돌아가는 의미로 하는 것이다. 맨날 쉽지 않은(?) 이야기만 하다보니 처음으로 돌아가자는 의미로 몇가지 살펴보도록 하자. Integer 오토박싱 int를 오토박싱 할 때 자바 컴파일러는 내부적으로 Integer.valueOf() 메서드를 호출한다. public static void main(String[] args) { Integer i = 10; } 이 경우 자바 컴파일러는 Integer.valueOf() 메서드를 호출해서 오토박싱을 한다. 정말로 그렇게 되는지 바이트코드를 살펴보자. public static main([Ljava/lang/String;)V L0..
-
Super type token카테고리 없음 2023. 4. 22. 14:40
오늘은 Super type token에 대해서 알아보자. Super type token을 알기전에 일단 type token을 알아야 되는데 type token 이란 간단히 말해서 타입을 나타내는 토큰(?)이다. 예를들어 String.class는 클래스 리터럴이라하며 Class가 타입토큰이라 말할 수 있다. 실제 Class은 String.class를 이용해서 메서드를 호출 할 수 있다. Super type token 경우에는 제네릭과 관련이 많다. 일단 제네릭을 잘 모른다면 여기를 한번 보고 이글을 봐야 할 듯 하다. Type token 타입 토큰의 간단한 예제를 만들어서 살펴보자. public static T typeToken(T value, Class clazz) { return clazz.cast(v..
-
Spring boot Actuator 사용해보자 (3)카테고리 없음 2023. 4. 22. 14:40
오늘은 Spring boot Actuator의 마지막 시간이다. 그때 말했던 것처럼 오늘은 trace를 좀 더 영구적으로 사용할 수 있도록 해볼 예정이다. 일단 몽고DB와 redis로 저장할 예정인데 redis 경우에는 시리얼라이즈 할때 좀 귀찮은게 있다. 그래서 좀 설정이 들어간다. 일단 trace에 대해서 좀 더 알아보자. InMemoryTraceRepository 기본적으로 trace 엔드포인트는 100개 까지만 저장 가능하다. 그래서 100개 이상 저장되면 이전에 저장되었던 오래된 데이터들은 사라진다. 이를 해결하기 위해 저장 개수를 늘릴 수 있다. @Bean fun traceRepository(): TraceRepository { val traceRepository = InMemoryTraceR..
-
Spring boot Actuator 사용해보자 (2)카테고리 없음 2023. 4. 22. 14:40
오늘역시 저번시간에 이어 Spring boot Actuator 를 좀 더 살펴보기로 하겠다. 그 전에 좋은 소식이 하나 있다. java9의 포함예정이였던 jigsaw 프로젝트 jsr376 (JPMS) 가 드디어 한달간의 리뷰를 마치고 통과하였다. 이번 리뷰에는 저번보다 두 회사가 늘어 25개 회사 중 24개 회사가 찬성표를 던졌고 한 회사(Red Hat)이 기권을 하였다. 이제 java9에 jigsaw 프로젝트가 포함되니 슬슬 공부좀 해야 겠다. 조만간 기회가 된다면 한번 포스팅을 해보도록 하자. CounterService metrics에 우리가 원하는 커스텀한 정보를 넣을 수 없을까? 만약 타 API와 호출하는 부분을 카운팅을 하고 싶다고 가정해보자. 얼마나 호출하는지 알고 싶다면 우리는 Spring ..