본문 바로가기

분류 전체보기81

Spring Bean Spring Bean Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)이라고 한다. Spring Ioc (제어의 역전, Inversion Of Control) 일반적으로 처음에 배우는 자바 프로그램에서는 각 객체들이 프로그램의 흐름을 결정하고 각 객체를 직접 생성하고 조작하는 작업(객체를 직접 생성하여 메소드 호출)을 했다. 예를 들어 A 객체에서 B 객체에 있는 메소드를 사용하고 싶으면, B 객체를 직접 A 객체 내에서 생성하고 메소드를 호출하는 것이다. 이때는 모든 작업을 사용자가 제어한다. 하지만 IoC가 적용된 경우, 객체의 생성을 특별한 관리 위임 주체에게 맡기게 된다. 이 경우 사용자는 객체를 직접 생성하지 않고, 객체의 생명주기를 컨트롤하는 주체는 다른 주체가 됩니다. 요약하.. 2023. 4. 24.
전략 패턴 전략 패턴 객체들이 할 수 있는 행위 각각에 대해 전략 클래스를 생성하고, 유사한 행위들을 캡슐화 하는 인터페이스를 정의하여, 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고 전략을 바꿔주기만 함으로써 행위를 유연하게 확장하는 방법을 말한다. 간단히 말해서 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고, 동적으로 행위의 수정이 필요한 경우 전략을 바꾸는 것만으로 행위의 수정이 가능하도록 만든 패턴이다. 전략 패턴 예제 - 로봇 만들기 추상 클래스 Robot의 자식 클래스로 Atom 클래스, TaekwonV 클래스가 존재하고, Robot의 추상 메서드로 attack(), move()가 있는 상황을 가정해보자. 이 때 attack과 move 추상메소드는 자식클래스에서 재정의하도록.. 2023. 4. 24.
싱글톤 패턴 싱글톤 패턴이 사용되는 이유 웹 애플리케이션은 수많은 클라이언트에서 서비스를 요청받게 되는데, 만약 서버에서 클라이언트의 요청을 받을때마다 클래스 인스턴스를 생성하게 되면 JVM 메모리의 사용량이 증가하게 되고 서버는 부하를 감당할 수 없게 될 것이다. @Configuration public class AppConfig { @Bean public MemberRepository getMemberRepository() { return new MemoryMemberRepository(); } @Bean public DiscountPolicy getDiscountPolicy() { return new RateDiscountPolicy(); } @Bean public MemberService memberServi.. 2023. 4. 23.
try-with-resources Resource 자원은 시스템을 운영하는 데 있어서 메모리나 입출력 장치 등 하드웨어, 소프트웨어 형태로 존재하는 구성요소를 의미한다. 그러나 보통 resource란 외부의 데이터(DB, Network, File)를 일컫는 말로 한정되어 쓰인다. 이런 resource들은 자바 내부에 위치한 요소들이 아니기 때문에, 이러한 프로세스 외부에 있는 데이터를 자바 코드에서 접근하려고 할 때 문제(예외)가 발생할 수 있는 여지가 존재한다. 특히나 이런 입출력에 관련된 resource들에 접근해서 사용하고 나면 닫는 것이 굉장히 중요하다. 예를들어 파일에 접근해 파일을 열고 내용을 쓰는 중에 다른곳에서 같은 resource에 접근해 사용하다 보면 데이터가 꼬일 수 있기 때문이다. GC(Garbage Collecti.. 2023. 4. 17.
직렬화와 역직렬화 정의 직렬화 말그대로 객체를 직렬화하여 전송 가능한 형태로 만드는 것을 의미한다. 객체들의 데이터를 연속적인 데이터로 변형하여 Stream을 통해 데이터를 읽도록 해준다. 이것은 주로 객체들을 통째로 파일로 저장하거나 전송하고 싶을 때 주로 사용된다. 역직렬화 직렬화된 파일 등을 역으로 직렬화하여 다시 객체의 형태로 만드는 것을 의미한다. 저장된 파일을 읽거나 전송된 스트림 데이터를 읽어 원래 객체의 형태로 복원한다. 직렬화는 다음과 같은 특징을 가진다. 프로그램이 종료되어도 객체의 데이터는 파일로 변환하여 저장되어 있기 때문에 언제든지 불러서 다시 객체로 변환할 수 있으며 외부로 보내서 데이터를 공유할 수 있음 Java의 기본 라이브러리를 사용하지 않더라고 여러 형태(CSV, JSON, 일반 파일 등).. 2023. 4. 17.
자바에서의 null 처리 null이란 널(null)은 어떠한 값으로도 초기화 되지 않은 것을 말한다. 이렇게 초기화된 데이터는 내가 사용할 예정이다 정도로 컴파일러는 생각합니다. 그래서 참조형이지만 힙메모리상에 데이터를 만들어 내지 않는다. null이 문제가 되는 상황 - NullPointerException (NPE) NullPointerException은 실제 값이 아닌 null 값을 가지고 있는 객체/변수를 호출할 때 발생하는 예외다. 그래서 NullPointerException이 발생하는 경우는 다음과 같다. null 객체의 instance 함수(static이 아닌 method)를 호출하는 경우 null 객체의 instance 변수에 접근하는 경우 null 배열 객체의 length를 구하려는 경우 null 배열 객체의 값.. 2023. 4. 17.