Spring 10

SpringBoot 3.0의 AOT (Ahead of Time Compilation)

Spring Boot 3.0이 정식 출시됨에 따라 GraalVM 기반의 Spring Native image를 통한 AOT를 공식 지원하게 되었습니다. - AOT란? Java의 컴파일 방법 중 하나로 프로그램이 실행되기 전에, 코드를 기계어로 컴파일하는 방식입니다. 즉 런타임 전에 컴파일을 진행하므로, 빠른 실행이 가능하다는 장점이 있습니다. 장점은 3가지 정도 언급을 하고 있습니다. - Less Spring infrastructure to execute at runtime - Fewer conditions to evaluate at runtime - Less reflection, since programmatic bean registration is used 요약하자면 적은 리소스로 빠르게 실행이 가능하..

Spring 2023.04.12

[R2DBC] R2DBC란 무엇인가?

R2DBC가 무엇인지에 대해 정리해보겠습니다. 그리고 이후 포스팅에서는 Spring에서 R2DBC를 활용하여 서비스를 구축하는 방법에 대해 학습해보고자 합니다. R2DBC (Reactive Relational Database Connectivity) 는 관계형 DB에서 효율적으로 코드가 동작할 수 있도록 reactive programming API를 가능하게 해줍니다. 즉 관계형 DB에 논블로킹 접근이 가능하게 해줍니다. 기존 관계형 DB 접근 API (ex JDBC 등 )는 블로킹 API이기때문에, 완전한 논블로킹 서비스를 구축할 수 없었습니다. 그렇기 때문에 이를 해결하고, 보다 적은 스레드와 하드웨어로 더 많은 동시 처리를 하기 위해 R2DBC가 탄생했다고 합니다. 이제는 Spring Data 에..

Spring 2022.07.22

STOMP에 대한 이해

STOMP란? (STOMP : Simple Text Oriented Messaging Protocol) STOMP는 메시지 전송을 효율적으로 하기 위한 프로토콜로, 기본적으로 Publish-Subscribe 구조로 되어있다. Publish-Subscribe 구조란 메시지를 공급하는 주체와 소비하는 주체를 분리해 제공하는 메시징 방법이다. 따라서 메시지를 전송하고 / 받아서 처리하는 부분이 확실하게 구조로 정해져있다. COMMAND key(header):value key(header):value ... BODY^@ COMMAND 리스트 - CONNECT, SEND, SUBSCRIBE, UNSUBSCRIBE, BEGIN, COMMIT, ABORT, ACK, NACK, DISCONNECT 참고 : http:/..

Spring 2022.03.14

[스프링 #7] Test

■ 스프링 #7. Test 스프링 프레임워크에서 '테스트'란 가장 중요한 가치라고 합니다. 테스트의 작성은 스프링의 다양한 기술을 활용하는 방법을 이해하고 검증하고, 실전에 적용하는 방법을 익히는데 효과적으로 사용될 수 있습니다. ● Test 테스트란 결국 개발자가 의도했던 대로 코드가 정확히 동작하는지를 확인하는 작업입니다. 또한 테스트의 결과가 원하는 결과가 아닌 경우 코드나 설계에 결함이 있음을 알 수 있습니다. 아래 코드는 UserDao의 오브젝트를 가져와 get 메소드를 호출하는 테스트 코드입니다. 테스트 결과를 콘솔에 출력하며, 문제가 없다면 출력되어 끝날 것입니다. // UserDao의 메소드를 테스트하는 경우 public class UserDaoTest { public static void..

Spring 2019.03.30

[스프링 #6] Custom Annotation

■ 스프링 #6. Custom Annotation ● Annotation Custom Annotation을 생성하는 방법에 대해서 정리해보겠습니다. 먼저 Annotation이란 무엇인지 간단히 정의하면 사전적의미로는 '주석'이라는 뜻입니다. 즉, 코드에 주석처럼 달아주어 특정한 의미를 부여해준다고 보시면 됩니다. 보통 @Controller와 같이 미리 정의된 Annotation을 많이 사용하는데요. 사용자가 필요에 의해 직접 Annotation을 추가할 수도 있습니다. ● Custom Annotation 간단하게 보면 아래와 같은 형태를 가집니다. @Target(ElementType.METHOD) @Retention(RetentionPolicy.Runtime) public @interface MyAnno..

Spring 2018.05.30

[스프링 #5] DispatcherServlet

■ 스프링 #5. DispatcherServlet ● DispatcherServlet spring.io에 따르면 DispatcherServlet의 정의는 다음과 같습니다. Central dispatcher for HTTP request handlers/controllers 이는 Spring MVC에서 Front Controller 역할을 한다고 할 수 있습니다. Client로부터 들어오는 Request를 최초로 받으며, 이를 어느 컨트롤러에서 처리될지를 결정합니다. 그리고 그 결과를 다시 Client에게 응답합니다. 이 흐름은 아래 그림을 보면 조금 더 쉽게 이해 할 수 있습니다. 1. 먼저 Clinet로부터 Request가 DispatcherServlet로 들어갑니다. 2. DispatcherServl..

Spring 2018.05.05

[스프링 #4] 의존관계 주입 (DI) - 2

■ 스프링 #4. 의존관계 주입 (DI) - 2 ● 의존관계 주입(DI) ? 의존관계 주입(DI)은 오브젝트 레퍼런스를 외부로부터 주입받고, 이를 통해 다른 오브젝트와 동적으로 의존관계가 맺어집니다. 오브젝트는 다른 오브젝트에 직접 주입할 수 있는게 아니라, 레퍼런스가 전달될뿐입니다.즉, 오브젝트 외부에서 의존하는 오브젝트를 주입시키는 것이 DI입니다. ● 의존관계 (2) 이번 포스팅에서는 어노테이션으로 의존관계를 주입하는 방법을 정리해보겠습니다. @Autowired와 @Component 어노테이션을 이용하여 주입할 수 있습니다. DI컨테이너는 @Autowired가 붙은 인스턴스 변수의 형에 대입할 수 있는 클래스를 @Component가 붙은 클래수 중에 찾아내 그 인스턴스를 인젝션 해주는데요. type..

Spring 2018.02.24

[스프링 #3] 의존관계 주입 (DI) - 1

■ 스프링 #3. 의존관계 주입 (DI) - 1 ● 의존관계 주입(DI) ? 의존관계 주입(DI)은 오브젝트 레퍼런스를 외부로부터 주입받고, 이를 통해 다른 오브젝트와 동적으로 의존관계가 맺어집니다. 오브젝트는 다른 오브젝트에 직접 주입할 수 있는게 아니라, 레퍼런스가 전달될뿐입니다.즉, 오브젝트 외부에서 의존하는 오브젝트를 주입시키는 것이 DI입니다. ● 의존관계 먼저, 의존관계란 개념부터 좀 더 자세히 정리하겠습니다.의존관계는 항상 방향성이 있습니다. 예를 들어, A가 B에 의존하고 있을 때는 A->B라고 표시할 수 있습니다. 의존한다는 것은 그 대상에 영향을 받는다고 이해하면 될 것 같습니다. 즉 위의 예시에서본다면 B가 변화할 때 A에 영향을 미친다고 보면 되겠네요. 또한, 인터페이스를 통해 의존..

Spring 2018.01.19

[스프링 #2] 제어의 역전(IoC)

■ 스프링 #2. 제어의 역전 (IoC) ● 제어의 역전(IoC)란 ? 제어의 역전이란 일반적인 제어 구조와는 달리, 오브젝트가 자신이 사용할 오브젝트를 생성, 관계 설정, 사용등의 제어를 직접 하지 않습니다.이러한 제어 권한을 다른 대상에게 위임하여, 위임받은 오브젝트가 이 모든 제어 권한을 갖도록 합니다. 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트를 '빈(Bean)'이라고 부릅니다. 이 빈을 사용함으로써 설계가 깔끔해지고 유연성 및 확장성이 좋아진다는 장점을 가질 수 있게됩니다. ● 스프링의 각 요소(2) - IoC 스프링에서는 빈의 생성과 관계 설정 같은 제어를 담당하는 IoC 오브젝트를 '빈 팩토리'라고 부르며, 이를 좀 더 확장한 개념을 '애플리케이션 컨텍스트'라고 합니다. ..

Spring 2017.12.30

[스프링 #1] 스프링 개념 및 DAO

■ 스프링 #1. 스프링 개념 및 DAO ● 스프링(Spring)이란 ? 자바 애플리케이션 개발에 사용되는 애플리케이션 프레임워크. 애플리케이션 개발을 빠르고 효율적이게 할 수 있도록 도와주며, 이를 위해 IoC/DI, AOP, 서비스 추상화 등의 프로그래밍 모델을 지원해줍니다.개발을 위해 쉽게 사용할 수 있도록 다양한 기술 API 또한 제공해줍니다. ● 스프링의 각 요소(1) - DAO DAO는 Data Access Object의 약자로 DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트를 말합니다. DAO에 필요한 사항은 크게 3가지로 나눌 수 있습니다.1) DB와 연결을 위한 Connection2) DB에 보낼 SQL문장을 담은 Statement를 만들고 실행3) 작업이 끝난..

Spring 2017.12.27