Netty는 소켓 통신에 필요한 쓰레드 운영 및 처리를 비동기로 하는 일종의 도구이다.비동기를 사용함으로써 가지는 이점에 대한 내용은 "NIO(Non-Blocking IO)"를 검색해 보기 바란다!Channel네이밍으로 추측할 수 있듯이 하나 이상의 입/출력으로 연결된
1. 개요 우리는 서버를 운영하면서 많은 양의 데이터에 의해 속도저하를 느끼게 되는 경우가 종종 있다. 일반적으로, 하나의 데이터베이스에 데이터를 축적해 나가기 때문에 많으면 많을 수록 검색량이 증가하여 실제 운영에 영향을 미친다. 여기서, 많은양의 데이터가 쌓인 상태
1.개요 @Modifying 어노테이션 이란? @Query 어노테이션으로 작성된 메소드 쿼리에서 select를 제외한 insert, update, delete 쿼리를 실행할 때 필요한 어노테이션이다. 실제로 Spring에서는 @Modifying 어노테이션을 강제하고 있
1.먼저 인터넷환경에서 받고싶은 image를 docker hub에서 땡겨받는다.docker pull confluentinc/cp-kafka-connect:5.5.02.그리고 docker save 명령어로 이미지를 tar파일로 뺀다 docker save confluent
본 포스팅에서는 JPA에서 많이 부딛히는 문제인 영속성과 관련한 내용을 담았다. JPA의 트랜잭션 환경을 이해하지 못하면 계속해서 발생되는 문제기 때문에 기본으로 장착해두자!! 1. 개요 Spring boot에서 사용하는 @Transactional의 성질은 쿼리 실
본 포스팅은 Spring boot 환경에서 Kafka를 연동시키는 방법 및 절차를 기술한다.대용량의 실시간 로그 처리에 특화되어 있는 솔루션이며 데이터를 유실없이 안전하게 전달하는 것이 주목적인 메세지 시스템에서 안정적인 아키텍처와 빠른 퍼포먼스로 데이터를 처리할 수
Spring 에서는 설정 파일에 들어가는 JDBC 접속 정보(ID, Password)를 평문이 아닌 암호문을 입력하여 접속정보를 일부 보호할 수 있는 암호화 기능을 제공하고 있다. 이 글에서는 jasypt 라이브러리를 이용한 암호화를 구현해본다.간단히 말하면 Java,
Jpa의 장점 중 하나인 객체간 매핑을 어떻게 활용하냐에 따라 복잡해질 수도 단순해 질수도 있다. 그 중 일대일 관계(@OneToOne)에 대해서 적어본다.
Spring boot에서는 Rest API 또는 Servlet 호출 시 앞단에 처리해야할 행동에 대해 'Interceptor'와 'Filter'라는 전처리 및 후처리 기능을 제공한다. 그럼 이 두 가지 기능의 차이점은 무엇이며 어떤 상황일 때 써야 할까?
Java 빌드 모듈에는 여러종류가 있지만 그중에 가장 다루기 쉬운 Gradle 빌드에 대해서 알아보고자 한다. Maven 빌드도 있지만, 세부적으로 설정하는 것이 Gradle보다 떨어지는 것 같아 쓰지 않고 있다!플러그인은 가장 먼저 선언하는 것으로써 전체적인 어플리케
1\. @interface 어노테이션의 정의@interface의 기본 포맷과 함께 사용되는 @Retention과@Target 어노테이션 옵션들의 정의는 다음과 같다. 아래 포맷으로 어노테이션 클래스가 된다!@Retention : @interface 어노테이션의 적용범위
Java의 List 사용 시 일부분을 잘라내기 할 경우 sublist()를 사용하는 경우가 있다.그러나 해당 함수의 리턴 값은 list로 반환되나 여기에 엄청난 함정이 숨어져 있다!sublist()는 다음과 같이 사용할 수 있다.위와 같이 인덱스를 자르는 용도로 사용
Spring boot에는 서버가 내장되어 있어 별도의 Web 컨테이너 도구 없이 Jar 파일로 실행이 가능하다. 그러나 properties 파일 내 변경이 있을 경우 다시 빌드하여야 하는 불편함이 존재할 수 있다! 따라서, 본 포스팅에서는 properties 파일을 외
Java에서 쓰레드를 사용하는 방법에는 Thread 클래스를 상속하는 방법과 Runnable 인터페이스를 사용하는 방법이 있다. 두 가지 방법은 어떤 차이점이 있을지 궁금하여 포스팅을 남긴다.Thread 클래스를 상속하면 기본적으로 run() 함수를 오버라이딩(over
Gradle 기반의 프로젝트 생성 시 "../gradle/wrapper/gradle-wrapper.properties" 파일이 생성된다(혹은 다른 경로에 설정될 수 있다). 해당 파일의 용도는 아래와 같은 이유로 사용된다.위 그림에서와 같이 각각의 개발자는 다른 gra
Gradle의 Profile은 스프링관련 설정이나 Database 관련 설정 또는 일반 변수를 지정할 수 있는 파일이다. 그러나 개발을 하는데 필요한 환경 값과 테스트 시 필요한 값 그리고 실제 서비스 운영에서의 값이 다를 수 있기 때문에 Profile을 분류하여 운용
스프링에서는 URL의 특정 패턴을 처리할 수 있는 옵션들을 제공하고 있다. 본 프로젝트에서는 여러 옵션 중 ViewController와 Interceptor를 설정하는 것을 다룰 것이다.우선 기본적인 Web MVC 설정 클래스 생성 방법은 다음과 같다."WebMvcCo
스프링 시큐리티(Spring Security)는 로그인, 로그아웃, 세션, 접근 권한 등의 중요한 보안 설정을 하는 모듈이다. 소스에서는 "WebSecurityConfigurerAdapter" 클래스를 상속하여 하위 함수들을 통해 설정한다.일반적으로 configure
Mark1 프로젝트는 Spring Boot를 기반으로 생성하며 구성환경은 다음과 같다.개발 도구 : Intellij개발 플러그인 : Gradle, Spring Boot 2.5.5, Oracle JDBC, PostgreSQL JDBC, Lombok프로젝트 생성 방법은 다
Mark1 프로젝트는 간단히 말해 API Gateway 이다. 일반적인 API Gateway의 경우 DMZ 위치에서 단순한 API 중계역할만 해왔다. 그러나 Mark1은 중계 기능을 세분화하여 API를 주고받을 경우에 발생하는 문제를 개선하기 위해 개발 된다.