-
Java stream 의 Optional.orElseThrow Java 스트림 API에서 orElseThrow 메서드는 Optional 클래스의 메서드 중 하나로, Optional 객체에 값이 없을 경우 예외를 던지는 방식으로 사용됩니다. 이 메서드를 사용하면 값이 없을 때 특정 예외를 던질 수 있어서 더 안전한 코드 작성을 도와줍니다. 이를 스트림과 함께 사용하여 값을 처리하고 예외를 던지는 방법을 설명하겠습니다. import java.util.Optional;public class Example { public static void main(String[] args) { Optional optional = Optional.of("Hello, World!"); String value = optional.orElseThrow(() ->.. -
@Configuable 과 @Configuation 의 차이 @Configuration@Configuration 어노테이션은 Spring 애플리케이션의 설정 클래스를 정의하는 데 사용됩니다. 이러한 클래스는 하나 이상의 @Bean 메서드를 포함하여 Spring IoC 컨테이너에서 관리되는 객체(Bean)를 정의합니다.주요 기능과 동작설정 클래스:@Configuration이 적용된 클래스는 Spring 애플리케이션 컨텍스트에 의해 설정 정보로 사용됩니다.이 클래스는 보통 애플리케이션의 환경설정을 Java 코드로 정의하는 데 사용됩니다.Bean 정의:@Bean 어노테이션이 적용된 메서드는 Spring 컨테이너에 의해 호출되어 Bean 객체를 생성하고 관리합니다.@Configuration 클래스 내의 @Bean 메서드는 Bean을 정의하고 이를 Spring 컨텍스트에 .. -
Jasypt library gradle implementation 'com.github.ulisesbocchio:jasypt-spring-boot:3.0.5'ymljasypt: encryptor: bean: jasyptStringEncryptor Config@Configuration@EnableEncryptablePropertiespublic class JasyptConfiguration { @Bean("jasyptStringEncryptor") StringEncryptor stringEncryptor() { String key = "XXXXXXXXXXXXXXX"; PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); Simpl.. -
Multi Datasource 를 이용한 database routing 전략 Read/Write 만 Datasource 를 분리를 할때는아래처럼 그냥 분리해도 되는데. 3개이상 커스텀 한 데이터 소스를 써야 할때는.. 어떻게 해야 편하고 코드추가 없이 해야 하나.고민하다가 TransactionSynchronizationManager.isCurrentTransactionReadOnly() ? // DataSourceLookupKey.READ : DataSourceLookupKey.WRITE;데이터소스 구성spring: application: name: multi-datasource-demo jpa: hibernate: ddl-auto: update show-sql: trueread: datasource: hikari: jdbc-u.. -
@JsonIgnore, @JsonProperty @JsonIgnore는 해당 필드를 JSON 직렬화/역직렬화 시 사용한다. 다만 아래와 같은 단점이 있다데이터 손실 위험: @JsonIgnore를 사용하면 해당 필드가 JSON 직렬화 및 역직렬화 과정에서 무시됩니다. 이는 클라이언트와 서버 간 데이터 전송 시 해당 필드의 데이터가 손실될 수 있음을 의미합니다. 예를 들어, 서버에서 생성된 lastUpdated 필드를 클라이언트로 전송하지 않으면, 클라이언트가 이 필드를 다시 서버로 전송할 때 최신 값을 알 수 없게 됩니다.데이터 불일치 문제: 특정 필드를 무시하면, 클라이언트와 서버 간 데이터 모델이 일치하지 않게 됩니다. 이는 특히 데이터 무결성을 유지해야 하는 시스템에서 문제가 될 수 있습니다. 클라이언트 측에서 변경된 데이터가 서버 측 데이터와 일..
- Multi Datasource 를 이용한 database routing 전략 Read/Write 만 Datasource 를 분리를 할때는아래처럼 그냥 분리해도 되는데. 3개이상 커스텀 한 데이터 소스를 써야 할때는.. 어떻게 해야 편하고 코드추가 없이 해야 하나.고민하다가 TransactionSynchronizationManager.isCurrentTransactionReadOnly() ? // DataSourceLookupKey.READ : DataSourceLookupKey.WRITE;데이터소스 구성spring: application: name: multi-datasource-demo jpa: hibernate: ddl-auto: update show-sql: trueread: datasource: hikari: jdbc-u.. 2024.07.06
- tomcat 을 대체 하기 위한 undertow Undertow와 Tomcat의 비교Tomcat장점:널리 사용됨: Tomcat은 오랜 기간 동안 많은 프로젝트에서 사용되어 왔으며, 많은 문서와 커뮤니티 지원이 존재합니다.안정성: 오랜 시간 검증된 안정성과 성능을 제공합니다.JSP/Servlet 지원: Tomcat은 JSP와 서블릿을 기본적으로 지원하며, 이는 많은 Java 웹 애플리케이션에서 표준으로 사용됩니다.단점:비교적 무거움: Undertow에 비해 더 무겁고, 더 많은 메모리와 리소스를 소비할 수 있습니다.성능: 대규모 트래픽을 처리할 때 Undertow보다 낮은 성능을 보일 수 있습니다.Undertow장점:가벼움: Undertow는 매우 가볍고, 필요한 기능만 선택하여 사용할 수 있어 리소스 소비가 적습니다.비동기 I/O: 비동기 논블로킹 I.. 2024.05.31
- ITerms 설정 iTerm2 설정하기 iTerm2 애플리케이션을 다운로드하고 설치합니다. iTerm2는 여기에서 다운로드할 수 있습니다. iTerm2를 실행하고 메뉴에서 Preferences를 선택합니다. General 탭에서 Working Directory 섹션에서 "Reuse previous session's directory"를 선택합니다. 이렇게하면 iTerm2가 새 탭을 열 때 항상 이전 작업 디렉토리를 사용합니다. Profiles 탭에서 Default 프로필을 선택하고 Colors 탭을 클릭합니다. 여기서 Color Presets 드롭다운 메뉴에서 좋아하는 테마를 선택할 수 있습니다. 여기에서는 Solarized Dark를 선택해 보겠습니다. Text 탭으로 이동하여 Font을 변경할 수 있습니다. 여기에서는.. 2023.02.18
- ITERM2 profile 설정하기 설정 iterm2 → preferences → profile Name : API 서버 TAG : profiles -> group 화 시킬때 사용 Badge : 터미널 화면에 터미널 설명을 적을수 있다. Command : ssh user@1.1.1.1 send text at start : USER_PASSWORD iterm2 실행하고 profile -> tag -> 접속할 서버 선택 끝! 2021.03.19
- Jmeter master, slave 를 이용한 http request test 사내에서 http 부하테스트를 진행할일이 있어서 구축을 해보았다. (실제로는 로컬에서 테스트했지만..) Master -> slave 로 command 를 실행하고 result 를 받는다. 당연한것이겠지만 slave 가 많을수록 target 으로의 http request 를 많이 줄수있다. master, slave 는 RMI 통신을 하기 때문에 같은 아이피 대역대애 있어야 한다..(예전에는 달라도 되게끔 셋팅을 했었던것같은데..까먹었다) 설치 요건 master, slave : 같은 jdk, jmeter 버젼을 사용, 같은 아이피 대역대(RMI 통신가능한..) master 쪽 jmeter 설정 remote_hosts=10.0.0.10,10.0.0.11 server_port=1099 client.rmi.loc.. 2021.03.07