일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 자료구조공부
- DDD
- 카프카
- 플러터 공부
- 기술공부
- nestjs공부
- JPA예제
- K8S
- Kafka
- querydsl
- 프로그래머스
- 코테준비
- 스프링공부
- 스프링부트공부
- nestjs
- JPA 공부
- 스프링부트
- 코테공부
- JPA
- 플러터 개발
- JPA스터디
- 기술면접공부
- 자바공부
- 스프링
- 스프링 공부
- 알고리즘공부
- JPA공부
- nestjs스터디
- Axon framework
- Flutter
- Today
- Total
DevBoi
[Spring] Invocation, RMI 관련 기초 개념 본문
Spring invoaction이란 뭘까?
우선 invocation은 메소드 호출과 같은 의미이다. 메소드를 호출 이라는 의미이다.
1) 간단한 리플렉션 및 invoke 예제
우선 리플렉션으로, 클래스를 받아서, 다른 곳의 클래스의 메소드를 호출해보자
1) TestReflection으로, 리플렉션이 될만한 클래스, 그리고 하위에 메소드를 선언해준다.
2) 해당 다른 클래스에서 해당 클래스 파일을 리플렉션, 해당 메소드를 가져와서, 호출해보자
실제로, callbyName이라는 메소드를 invoke하고, 해당 값으로 콘솔에 gd가 출력이 되었다
이렇게 리플렉션으로 해당 클래스파일을 가져와서 호출할수 있다.
우선 리플렉션은, 그 클래스파일의 타입을 알지 못해도, 해당 클래스의 메소드를 사용할수있다.
해당 리플렉션은 저번 포스팅에서도 설명했듯이
두가지의 큰 문제가 있다.
1. 많은 사용은 성능 저하를 준다.
2. 컴파일시가 아닌 런타임시에만 발생하는 오류가 생길수있다. 따라서 예외처리를 잘해주어야한다는 것이다.
2.RMI의 의미와 이해
reflection은 자바에서 제공하는 api이다.
RMI라는 것은 많이 들어볼수있는 용어인데, 어떤것을 의미하는 것일까?
RMI는 분산되어 존재하는 객체간의 메시지를 전달할수있게 해주는 프로토콜이다.
쉽게 얘기하면, 분산 객체간의 통신 프로토콜이다.
많이들 사용하는 것은 Java RMI이고, RMI는 자체로 전체 모든 통신 방법을 포함한다.
Java RMI를 사용하는 이유
1. 구현하기 쉽다.
소켓으로 구현하면 까다롭지만, 자바는 socket 자체는 하부에 숨기고, 상위 레벨에서 수행하여
메소드를 호출하는 것과 같이 통신을 할수있게 해주어 구현하기 쉽다.
위 3가지를 요약하면, JVM에서 어디든 사용가능하고, 자바에서 쉽게 제공해주기 떄문에 JAVA RMI를 사용한다는 것이다.
'Develop' 카테고리의 다른 글
[Spring] AOP 예제 및 복습 (0) | 2021.12.14 |
---|---|
[Spring] POJO이란? (0) | 2021.12.14 |
ehcache의 이해와 사용방법 예제 (0) | 2021.12.12 |
[Spring Security] 스프링 시큐리티 기초 (0) | 2021.12.05 |
[Message Converter] 메시지 컨버터에 대해 알아보자 (0) | 2021.12.01 |