전체 글 (55) 썸네일형 리스트형 Java - unchecked casting Collection collection = (Collection) new HashMap(); 위 코드를 그대로 작성하면 아래와 같은 경고 메시지를 띄울 뿐 컴파일 에러를 발생 시키지 않는다. Unchecked cast: 'java.util.HashMap' to 'java.util.Collection' Collection과 HashMap은 서로 아무런 관계가 없는 객체임에도 명시적 형변환이 가능한 것 처럼 표시된다. 하지만 이러한 형변환은 런타임 환경에서 아래와 같은 에러를 발생시키게 된다.Exception in thread "main" java.lang.ClassCastException: class java.util.HashMap cannot be cast to class java.util.Colle.. 왜 Rust일까 애플리케이션들은 공통적으로 다음과 같은 요구사항을 갖는다.안전하고 안정적이며 신뢰할 수 있어야 한다.리소스를 효율적으로 사용해야 한다.지연 시간을 최소화해야 한다.높은 동시성을 지원해야 한다.몇가지 요구사항을 더 추가하면시작 및 종료가 짧아야한다.유지보수 및 리팩터링이 쉬워야한다.개발자 생산성을 보장해야 한다.위 요구 사항들은 모두 개별 서비스 수준과 아키텍처 수준에서 처리될 수 있다는 점이 중요하다.러스트를 선택했을 때러스트를 사용해 애플리케이션 백엔드와 소프트웨어 인프라스트럭처 서비스를 구현할 때 얻을 수 있는 이점에 대해 알아보자. 위에서 언급했던 필요한 사항들을 어떻게 만족시키는지 알아볼 것이다. 1. 러스트는 안전하다.프로그램의 안전성에 대해 얘기를 할 때에는 타입 안전성, 메모리 안전성, 스레.. Java Reflection(2) Field - 필드 변수에 접근Java 클래스에서 필드는 클래스나 인터페이스 안에서 선언된 변수를 의미하며 이는 정적 상수나 객체 변수같이 클래스 내에서 선언된 변수가 될 수 있다.Field 클래스는 필드를 나타내며 필드의 이름과 타입 등 다양한 특성 정보를 가지고 있다. 이러한 Field 객체를 생성하는 것에는 Constructor를 생성하는 것처럼 Field 객체도 여러가지 방법이 존재한다.Class.getDeclaredFields()클래스에 선언된 접근 제어자에 상관없이 모든 필드를 배열로 반환한다. - 상속받은 필드는 제외한다. Class.getFields()public으로 선언된 모든 필드를 배열로 반환한다. - 상속받은 필드도 포함한다. Class.getDeclaredField(fieldNam.. Java Reflection(1) Java Reflection이란?Java Reflection은 언어이자 JVM의 기능이며, 앱이 실행하는 동안에 클래스와 객체 정보를 추출할 수 있다.Reflection API로 유연한 코드를 작성할 수 있으며, 프로그램 실행 단계에서 다양한 소프트웨어 컴포넌트를 연결하고 소스 코드를 수정하지 않고 새로운 프로그램 순서를 만들어 낼 수 있다. 또한 Reflection으로 다목적 알고리즘도 작성할 수 있다. 우리가 보통 작성하고 프로그램은 데이터를 넣고 분석해서 작업을 수행하고 출력값을 돌려준다. 반면에 Reflection으로 프로그램을 작성하면 데이터와 코드를 모두 입력값으로 인식하고 분석해 작업을 수행하고 출력값을 낸다. Reflection은 프로그램을 실행하면서 앱 객체와 클래스를 분석하고 앱 객체.. Spring Boot - RestTemplate를 사용한 Server To Server 연결(3) 이 전 포스트들에서는 RestTemplate로 GET요청을 다양하게 하는 법과 DTO로 리팩토링해 유연하게 대응하는 법을 알아보았다. 이번에는 GET이 아닌 다른 요청들을 알아보겠다. 먼저 지금까지와는 다르게 patch메서드를 사용하기 위해서는// Patch 메서드를 사용하기 위한 의존성 / spring boot 3.ximplementation 'org.apache.httpcomponents.client5:httpclient5'위의 의존성을 추가해주어야한다. postForEntity(uri, requestObject, responseType.class); // post Entity 요청 postForObject(uri, requestObject, responseType.class); // post .. Spring Boot - RestTemplate를 사용한 Server To Server 연결(2) 이 전 포스트에서는 RestTemplate로 queryString과 header에 데이터를 담아서 GET요청을 보내는 법을 알아보았다. 이번에는 pathParameter와 지금까지 한 것들을 DTO로 바꿔서 유연하게 대응할 수 있는 코드로 리팩토링 해보자. 이전 포스트에서 마지막으로 완성된 client와 server는 public ResponseEntity hello() { // 요청 보낼 uri 생성 URI uri = UriComponentsBuilder .fromUriString("http://localhost:10000") // baseUrl .path("/api/server/hello") // 경로 .encode() // 인코딩 .build() .. Spring Boot - RestTemplate를 사용한 Server To Server 연결(1) RestTemplate란JDK, HttpURLConnection, Apache HttpComponents등과 같은 Http client 라이브러리의 간단한 template method API를 제공하며, Http요청을 동기적으로 처리하는 클라이언트이다.RestTemplate는 자주 사용되는 Http method templates 외에도, 자주 사용되지 않는 exchange 와 execute 같은 method들도 제공한다.※ 스프링 3.0부터 지원한다.spring.io RestTemplate문서서버의 입장에서 API를 제공하던 지금까지와는 다르게 서버가 하나의 클라이언트가 되어 다른 서버로 API를 요청할 수도 있다.RestTemplate를 사용해서 간단한 api를 개발해보자. 우선 서버를 생성해보자. .. Spring Boot Interceptor란? Interceptor란Spring이 제공하는 기술로써, 디스패처 서블릿(Dispatcher Servlet)이 컨트롤러를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할 수 있는 기능을 제공한다Filter와 매우 유사한 형태로 존재하지만, 차이점은 Spring Context에 등록이 된다.AOP와 유사한 기능을 제공할 수 있으며, 주로 인증단계를 처리하거나, Logging하는 데에 사용한다.Interceptor 동작 위치 및 순서1. DispatcherServlet은 Request 객체를 받아서 분석한뒤 HandlerMapping에게 사용자의 요청을 처리할 핸들러를 찾도록 요청 한다. 2. 그결과로 HandlerExecutionChain이 동작하게 되는데, 이 HandlerExecutionChain은.. 이전 1 ··· 3 4 5 6 7 다음