본문 바로가기

Spring6

자바의 리플렉션(Reflection) 리플렉션은 객체의 구체적인 타입을 알지 못해도 해당 객체의 멤버변수, 메서드 등에 접근할 수 있도록 해주는 기능입니다. 자바 어플리케이션이 컴파일되고 실행될 때, 클래스 로더는 자바 바이트코드(.class)를 읽어서 메모리에 저장합니다. 특히, Class 타입의 인스턴스를 만들어주는데요, 항상 있다는 것을 보장할 수 있기 때문에 아래와 같이 클래스를 만들기만 하면 바로 사용할 수 있습니다. class Member ( val name: String, ) val memberClass = Member::class.java val memberClass2 = Member("chobo").class 이러한 Class 인스턴스는 해당 클래스에 정의된 멤버변수, 메서드, 생성자 등 클래스의 모든 정보에 접근할 수 있습.. 2023. 9. 2.
Speing Webflux 이해하기 Spring MVC 는 매 요청 당 스레드 하나를 할당하고 요청에 대한 작업은 해당 스레드가 담당한다.  요청에 할당되는 스레드는 응답을 주기 전까지 스레드를 반납하지 않는데, 여기서 아래와 같은 문제가 발생한다.스레드는 요청에 대한 응답이 반환될 때까지 스레드 풀에 반환되지 않는다. 즉, Blocking call 로 인해 스레드가 CPU 를 사용하지 않더라도 스레드를 점유하고 있어 다른 요청에 해당 스레드를 할당할 수 없다.스레드 내에 Blocking call 이 많아지면 문맥 교환이 많아진다.Spring 5 부터는 Non-blocking 으로 동작하는 서버를 작성하기 위해 Webflux 를 이용할 수 있다. Webflux 는 기본적으로 Non-blocking I/O 를 제공하는 Netty 를 사용하는.. 2023. 8. 22.