전체 글 883

kotlin - jackson 관련 이슈 (토비의 스프링 6 강의)

토비님의 스프링 6 강의를 듣다가, 아래와 같은 코드를 입력 했었다. (자바로 안하고, 코틀린으로 작성 했을때의 문제이다)data class Payment( val orderId: Long, val currency: String, val foreignCurrencyAmount: BigDecimal, val exchangeRate: BigDecimal, val convertedAmount: BigDecimal, val validUntil: LocalDateTime,)import com.fasterxml.jackson.annotation.JsonIgnorePropertiesimport java.math.BigDecimal@JsonIgnoreProperties(ignoreUnknown = true)..

SDKMAN - JDK management kit

sdkman installhttps://sdkman.io/installsdkman 설치 스크립트curl -s "https://get.sdkman.io" | bashusage사용 방법은 아래 페이지에서 확인 할 수 있고, 쉽게 쓸 수 있다.https://sdkman.io/usagejdksjdk의 다양한 버전을 쓸 수 있어서 관리 하기 좋은 것 같다.https://sdkman.io/jdkssdk env init # 특정 버전을 고정 하고 싶을때, 특정 디렉토리 내에서 환경 설정 파일을 생성하고 쓰기 좋다.sdk list javasdk install java 17.0.11-temsdk default java 17.0.11-temsdks해당 sdk는 groovy나, scala, kotlin도 설치가 자유롭다. ..

MacOS 2024.06.27

퍼플렉시티 AI 검색의 지평

https://www.perplexity.ai PerplexityPerplexity은 정확하고, 신뢰할 수 있고, 실시간으로 모든 질문에 대한 답변을 제공하는 무료 AI 지원 답변 엔진입니다.www.perplexity.ai조금 써봤는데, 플러그인도 이미 개발 되어 있고, 구글 검색 보다 좀 더 편리하다?는 느낌을 많이 받는데, 진짜 지금은 타자 검색을 하지만, 나중에는 음성 검색으로 모든 것을 할 수 있겠다 싶다. 그런데, 구글도 여전히 구 시대의 패러다임을 갖고 있다. 이게, 한때는 혁신이었다. 근 20년이 넘는 혁신으로 페이지 랭크 알고리즘으로 버텨 왔는데, 앞으로는 사람들만의 저작물이 있는 시대가 아니라, AI로 찾아야 하는 시대가 됐다고 생각 된다.향후 20년의 지평은 무엇이 될까? 앞으로는 AI..

Tool 2024.06.21

Conventional commit plugin 추천 - commit prefix 자동화를 하자.

요즘 추세가 conventional commit 형태로 작성하는게 국룰이 된 것 같다. ref. https://www.conventionalcommits.org/en/v1.0.0/ Conventional Commits A specification for adding human and machine readable meaning to commit messages www.conventionalcommits.org 고민하다 보니 수동으로 쓰자니, 애매하여 찾아 보니 플러그인이 역시나 있었다. https://plugins.jetbrains.com/plugin/13389-conventional-commit Conventional Commit - IntelliJ IDEs Plugin | Marketplace The..

Tool 2024.03.28

스프링 핵심 원리 기본편 강의 - ComponentScan과 의존 관계 자동 주입

@ComponentScan 자동으로 @Component가 붙은 컴포넌트를 해당 빈 등록을 해준다. (싱글톤) 빈 이름은 기본전략은 MemberServiceImpl class -> memberServiceImpl로 앞의 글자만 소문자로 바꿔서 등록 해준다. 이름을 수정 할 수 있음. 15:47:41.702 [Test worker] DEBUG org.springframework.context.annotation.AnnotationConfigApplicationContext - Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@d049e53 15:47:41.708 [Test worker] DEBUG org.s..

스프링 핵심 원리 기본편 강의 - Bean Definition

BeanDefinition 스프링은 어떻게 이런 다양한 설정 형식을 지원하는 것일까? 그 중심에는 BeanDefinition 이라는 추상화가 있다. BeanDefinition 정보 BeanClassName: 생성할 빈의 클래스 명(자바 설정 처럼 팩토리 역할의 빈을 사용하면 없음) factoryBeanName: 팩토리 역할의 빈을 사용할 경우 이름, 예) appConfig factoryMethodName: 빈을 생성할 팩토리 메서드 지정, 예) memberService Scope: 싱글톤(기본값) lazyInit: 스프링 컨테이너를 생성할 때 빈을 생성하는 것이 아니라, 실제 빈을 사용할 때 까지 최대한 생성을 지연처리 하는지 여부 InitMethodName: 빈을 생성하고, 의존관계를 적용한 뒤에 호출..

스프링 핵심 원리 기본편 강의 - Bean scope & Bean lifecycle

빈 스코프 스프링 빈은 스프링 컨테이너의 시작과 함께 생성 되어서 스프링 컨테이너가 종료될 때까지 유지 되는데, 이는 기본적으로 싱글톤 스코프로 생성 되기 때문이다. 다양한 스코프 지원 싱글톤 프로토 타입 스프링 컨테이너는 프로토 타입 빈의 생성과 의존관계 주입까지만 관여 하고 그 후는 관리 하지 않음. (매우 짧음) 웹 관련 스코프 request 웹 요청이 한번 들어왔다 나갈때까지 유지 session 웹 세션이 생성되고 종료될 때까지 유지 application 웹 서블릿 컨텍스트와 같은 범위로 유지 component scan 자동등록 @Scope("prototype") @Component public class HelloBean {} 수동 등록 @Scope("prototype") @Bean Protot..

스프링 핵심 원리 기본편 강의 - 스프링

스프링이란? Spring framework / Spring boot 필수 Spring batch, Spring Session, Spring Data 등등 스프링프레임워크 핵심기술 웹기술 데이터 접근 기술 기술 통합 테스트 언어 스프링 부트 최근에 기본으로 사용 Spring Application을 쉽게 생성 내장 톰캣 지원 손쉬운 빌드 구성을 위한 starter 종속성 제공 프로덕션 준비 기능 제공 간결한 설정 스프링 부트만 사용 할 수 없고, 실제는 스프링 프레임워크를 사용한다. 스프링이란 단어? 스프링 생태계 스프링 프레임워크 스프링 DI 컨테이너 기술 스프링 진짜 핵심 자바 언어 - 객체 지향 언어 스프링은 객체 지향 언어가 가진 강력한 특징으로 개발 할 수 있도록 돕는 프레임워크 다형성 / 객체 역..

스프링 핵심 원리 기본편 강의 - 싱글톤

우리가 만들었던 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때 마다 객체를 새로 생성한다. 고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성되고 소멸된다! 메모리 낭비가 심하다. 해결방안은 해당 객체가 딱 1개만 생성되고, 공유하도록 설계하면 된다. 싱글톤 패턴 싱글톤 패턴: 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 그래서 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 한다. 싱글톤 방식의 주의점 싱글톤 패턴이든, 스프링 같은 싱글톤 컨테이너를 사용하든, 객체 인스턴스를 하나만 생성해서 공유하는 싱글톤 방식은 여러 클라이언트가 하나의 같은 객체 인스턴스를 공유하기 때문에 싱글톤 객체는 상태를 유지(stateful)하게 설계하면 안된다..

반응형