[Java] Optional<T> 클래스:: 자바에서 Null을 처리하는 방법
·
카테고리 없음
Java8에서 부터 Optional 클래스를 지원한다. NPE란? optional을 알아보기전에 npe는 null point exception의 줄인말로 개발할 때 자주 볼 수 있는 예외이다. 이러한 npe가 발생하는 것을 방지하기 위해 Null 검사하는 로직을 추가해주는데 그렇게되면 코드가 길어지고 복잡해질 수 있다. 따라서 null 값을 체크해주기 위해 optional 을 사용한다. Optional이란? Java8에서 Optional 클래스를 사용해서 npe(null point exception)을 방지할 수 있도록 해준다. option는 null이 올 수 있는 값을 감싸는 wrapper 클래스로, 참조하더라도 npe가 발생하지 않도록 도와준다. Optional 클래스는 아래와 같이 value에 값을..
[JAVA] 자바 예외 처리 (Exception)
·
스터디/JAVA
자바 프로그램 컴파일시 발견하지 못하는 에러를 Runtime error 라고 한다. 이때 발생하는 에러를 어떻게 처리할지 개발자가 예외 처리로 핸들링 할 수 있다. 예외 처리 1. try catch 구문 예외가 발생했을 때 try ~ catch ~ finally 구문으로 예외를 처리하거나 throw로 메소드를 호출한 곳으로 던질 수 있다. 한 가지 중요한 점은 자바에서 모든 예외는 Exception 이라는 클래스를 상속받는다. Exception : 컴파일 시 발생 (일반예외) RuntimeException : 프로그램 실행 시 발생 (실행예외) Exception의 상속 트리구조는 아래와 같다. 예외 처리하는 방식은 아래와 같다. try { //로직 수행 구문 }catch(Exception e){ //Ex..
[Spring] @ResponseBody와 @ModelAttribute 차이점
·
스터디/Spring
@RequestBody @RequestBody는 클라이언트가 전송하는 Json(application/json)이나 xml 형태의 HTTP Body내용을 Java Object로 변환시켜준다 (POST / PUT). 따라서 Body가 존재하지 않는 GetMapping에 RequestBody를 사용하면 에러가 발생한다. Spring에서 관리하는 MessageConverter를 활용하여 Java 객체로 변환된다. @ModelAttribute @ModelAttribute는 클라이언트가 전송하는 multipart/form-data 형태의 요청 데이터(GET) 내용과 HTTP 쿼리 파라미터들을 Setter 메서드를 통해 1:1로 객체에 바인딩한다. 매핑시키는 파라미터의 타입이 객체의 타입과 일치하는지를 포함한 다양한..
[Spring] 싱글톤 패턴 (Singleton pattern)
·
스터디/Spring
1. 싱글톤 패턴이란 (Singleton pattern) 소프트웨어 디자인 패턴에서 싱글톤 패턴을 따르는 클래스는 , 생성자가 여러 차례 호출되더라고 실제로 생성되는 객체는 1개이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. Why? 싱글톤 패턴을 왜 사용할까? 만약 DI 컨테이너가 매번 클라이언트에서 요청이 들어올때마다 각 로직을 담당하는 오브젝트를 생성한다고 가정해보자. 요청이 엄청 많은 트래픽 사이트에서는 계속 객체를 생성하게되어 메모리 낭비가 심해지고 서버가 감당하기 힘들어진다. 그래서 싱글톤 패턴을 사용한다! 2. 싱글톤 패턴 구현 2-1. DI Container AppConfig appConfig = new AppConfig(); // 호출 할 때마다 다른 객체..
[Spring] Spring Container, BeanFactory 그리고 ApplicationContext
·
스터디/Spring
스프링에서 가장 중요한 개념인 Container, BeanFactory 그리고 ApplicationContext 에 대해서 알아보고자 한다. 스프링에서 BeanFactory 와 ApplicationContext는 IoC Container 역할을한다. Spring Container 스프링에서 DI를 이용하여 애플리케이션을 구성하는 여러 빈들의 생명주기와 애플리케이션의 서비스 실행등을 관리하며 생성된 인스턴스들에게 기능을 제공하는 것. 컨테이너에 적절한 설정만 있으면 프로그래머의 개입 없이 작성된 코드를 컨테이너가 빈을 스스로 참조한 뒤 알아서 관리한다. 스프링 컨테이너는 주로 BeanFactory와 ApplicationContext 두 가지로 다룬다. *빈(Bean) : 스프링이 제어권을 갖고 직접 생성 ..
[JAVA] Primitive Type 과 Wrapper Class
·
스터디/JAVA
💡기본형과 참조형 JAVA의 변수는 기본적으로 기본형(Primitive Type)과 참조형(Reference Type)으로 나눌 수 있다. 기본형으로는 short, int, long, float, double, byte, char, boolean 으로 8가지가 있다. 1. 기본형(Primitive Type) - 모두 첫 글자가 소문자 - 산술 연산이 가능하다. - Null로 초기화 할 수 없다. 2. 참조형(Wrapper Class) - 모두 첫 글자가 대문자 - 산술 연산 불가능 - Null 사용이 가능하다. - DB와 연결시 DTO 객체에 Null이 필요한 경우 사용할 수 있다. 기본형은 변수의 값을 그대로 저장한다. 참조형은 객체의 레퍼런스를 저장한다. 참조형에는 객체가 할당되어야하는데 기본형과 달..